Как синхронизировать все Textbox1 в Workbook?

String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true

Убедитесь, что вы понимаете, почему. Это потому, что сравнение == сравнивает только ссылки; equals() метод сопоставляет содержимое по символу.

Когда вы вызываете new для a и b, каждый получает новую ссылку, указывающую на "foo" в таблице строк. Ссылки разные, но контент один и тот же.

0
задан Grant Foster 10 March 2019 в 07:13
поделиться

2 ответа

Вы можете добавить модуль в свой проект и добавить туда этот Sub (корректируя имена листов и TextBox, если необходимо):

Sub SetText(txt As String)
    Worksheets("Sheet1").TextBox1.Text = txt
    Worksheets("Sheet2").TextBox1.Text = txt
    Worksheets("Sheet3").TextBox1.Text = txt
    Worksheets("Sheet4").TextBox1.Text = txt
    Worksheets("Sheet5").TextBox1.Text = txt
End Sub

Затем, в событии Change для каждого TextBox добавьте это

[ 111]

Чтобы очистить весь текст, вы можете установить .TextBox1.Text = ""

0
ответ дан Sergey 10 March 2019 в 07:13
поделиться

1) вставьте следующий код в новый модуль вашего проекта

Public dontDoThat As Boolean ' a public variable, visible throughout all your project you'll use to give way to synchronizing activity

Option Explicit

Sub Synchronize(txt As String, shtName As String)
    dontDoThat = True ' set your public variable to True and prevent subsequent TextBox1_Change() events to run it again

    Dim sht As Variant
    For Each sht In Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")
        If sht <> shtName Then Worksheets(sht).TextBox1.Text = txt 
    Next

    dontDoThat = False ' set your public variable to False and allow subsequent TextBox1_Change() events to run it 
End Sub

2) измените ваше TextBox1_Change() событие на всех ваших листах следующим образом

Private Sub TextBox1_Change()
    If Not dontDoThat Then Synchronize Me.TextBox1.Text, Me.Name 'call Synchronize() only if your public variable allows it to

    ...
    (rest of your previous code follows)
    ...

End Sub

Чтобы очистить все текстовые поля просто очистить один из них

0
ответ дан DisplayName 10 March 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: