2010-05-25 5 views

Répondre

2

Voici une autre façon:

Créer un module et placez ce code là. Cela doit être configuré pour vos propres noms de zone de texte spécifique et noms de feuille

Public Sub UpdateTextBoxes(str As String) 

    Sheets("sheet1").TextBox1.Text = str 
    Sheets("sheet2").TextBox1.Text = str 
    Sheets("sheet3").TextBox1.Text = str 
End Sub 

Ensuite, pour chaque objet zone de texte que vous souhaitez reproduire, utiliser pour son événement de changement (feuille module de classe) (Changer les paramaters à la suite vos besoins)

Private Sub TextBox1_Change() 
    UpdateTextBoxes Me.TextBox1.Text 
End Sub 

de cette façon, vous pouvez nommer vos contrôles comme bon vous semble, et vous pouvez mettre à jour le texte de l'une des zones de texte, et ils seront toujours cohérente.

+0

Vous êtes ma personne préférée. Merci! – Daniel

0

Voulez-vous que les autres zones de texte soient modifiables ou affichent toujours le contenu du premier? Qu'arrive-t-il aux autres zones de texte lorsqu'un utilisateur modifie les 2ème, 3ème et ainsi de suite (dans le premier cas)? Ces questions auront une incidence sur la solution ... Mais si vous voulez juste les cases pour imiter le premier, puis utilisez SheetName!CellAddress comme ceci:

=WorksheetName!A1 

substituer Juste le nom de la feuille et la cellule appropriée.

+0

Pour plus d'informations sur le référencement d'autres feuilles de calcul, cellules, programmes, etc. dans Excel, voir ceci: http://office.microsoft.com/en-us/excel/HP051995141033.aspx – JYelton

+0

Je cherche quelque chose J'aime = WorksheetName! textbox1 bien que je suis sûr que c'est incorrect. – Daniel

+0

Je suis désolé, je ne suis pas familier avec l'utilisation de TextBoxes dans Excel, cependant j'ai trouvé ce site qui pourrait vous aider (en répondant à votre 'comment faire dans le code'); c'est VBA: http://www.mrexcel.com/archive/Controls/4776.html – JYelton

0

Créez une plage nommée quelque part dans votre classeur, puis tapez ce nom dans la propriété textbox linkedcell.

+0

Ce n'est pas ce que je veux. Je veux que la cellule imite ce qui est dans la zone de texte. – Daniel

+0

En définissant la cellule liée, cette cellule prendra la valeur de tout ce que vous tapez dans la texbox (et vice versa). Essayez-le et faites-moi savoir si ce n'est pas ce dont vous avez besoin. – dendarii

+0

Si vous voulez que le code VBA accomplisse ceci, faites le moi savoir, mais de votre question il semble que vous pourriez accomplir ceci par la fonctionnalité standard d'Excel. – dendarii

1

Voici une méthode: Définissez la propriété LinkedCell de la première zone de texte sur A1. Définissez la propriété LinkedCell de chaque autre zone de texte sur A1 de sa propre feuille. Puis, en feuilles 2-4, cellule A1, mettre

=Sheet1!A1 

Maintenant, tout ce que vous tapez dans la zone de texte sur Sheet1 sera dans les zones de texte sur des feuilles 2-4. Si vous tapez quelque chose dans les zones de texte de 2-4, vous casserez le lien. Mais à partir de votre question, il semble que vous ne vouliez saisir que le premier.

Voici une autre façon.

Private Sub TextBox1_Change() 

    Dim ws As Worksheet 

    For Each ws In Me.Parent.Worksheets 
     ws.OLEObjects("TextBox1").Object.Text = Me.TextBox1.Text 
    Next ws 

End Sub 

Mettez cela dans le module de classe pour la feuille. Il suppose que toutes vos zones de texte sont nommées TextBox1. Chaque fois que vous modifiez celui sur Sheet1, ceux de l'autre feuille sont modifiés.

Questions connexes