Дублируйте то, что находится в текстовом поле в других текстовых полях на других листах - PullRequest
1 голос
/ 25 мая 2010

У меня есть четыре листа в электронной таблице.

На каждом листе есть текстовое поле.

Когда я набираю текстовое поле на sheet1, я хочу, чтобы текстовые поля на sheet2, sheet3 и sheet4 заполнялись одним и тем же значением.

Ответы [ 4 ]

3 голосов
/ 26 мая 2010

Вот еще один способ:

Создайте модуль и разместите этот код там. Это должно быть настроено для ваших собственных конкретных имен текстовых полей и имен листов

Public Sub UpdateTextBoxes(str As String)

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

Затем для каждого объекта текстового поля, которое вы хотите реплицировать, используйте его для события изменения (модуль класса листа) (измените параметры в соответствии с вашими потребностями)

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

Таким образом, вы можете назвать свои элементы управления так, как считаете нужным, и вы можете обновить текст из любого текстового поля, и они всегда будут согласованными.

2 голосов
/ 25 мая 2010

Вот один из способов: Установите для свойства LinkedCell первого текстового поля значение A1. Установите для свойства LinkedCell каждого другого текстового поля значение A1 своего собственного листа. Затем в листах 2-4 ячейку А1 поставить

=Sheet1!A1

Теперь все, что вы введете в текстовое поле на Листе 1, будет в текстовых полях на листах 2-4. Если вы введете что-нибудь в текстовые поля в 2-4, вы сломаете ссылку. Но из твоего вопроса похоже, что ты хочешь набрать только первый.

Вот другой способ.

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

Поместите это в модуль класса для листа. Предполагается, что все ваши текстовые поля имеют имя TextBox1. Всякий раз, когда вы меняете тот на Листе 1, те на другом листе меняются.

0 голосов
/ 25 мая 2010

Создайте именованный диапазон где-нибудь в вашей рабочей книге, затем введите это имя в текстовом поле свойстваcellcell.

0 голосов
/ 18 мая 2010

Хотите ли вы, чтобы другие текстовые поля были редактируемыми или просто всегда отображали содержимое первого? Что происходит с другими текстовыми полями, когда пользователь редактирует 2-е, 3-е и т. Д. (В первом случае)? Эти вопросы будут влиять на решение ... Но если вы просто хотите, чтобы блоки имитировали первое, то используйте SheetName!CellAddress, например:

=WorksheetName!A1

Просто подставьте имя листа и соответствующую ячейку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...