我的工作簿有三张(名为Sheet1~Pheet3)和TEXTBOXES。
这有一个模块。
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")
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
这些代码可以在所有工作表上同步TEXTBOX。
但它只适用于Text。
如果我在Sheet1的TEXTBOX1中键入一些文本,则相同的文本将显示在所有其他工作表的TEXTBOX1中。
但搜索功能不适用于其他工作表。
在Sheet1的TEXTBOX1上输入一些文本后,当我按下回车键时,搜索功能仅在Sheet1中有效。
我想触发所有表格的文本框上的回车键。
这些床单也有TEXTBOX2。因此,我想知道如何将同步应用于TEXTBOX1和TEXTBOX2。
我需要别人的帮助。
Neo,之前我做过类似的事情 - 你用Change事件或指定的KeyDown事件(通常是Enter键--vbKeyReturn)创建一个自动过滤器。由于您正在使用KeyDown事件,因此使用集合并不过分详尽。例如,您可以通过名称相似性或TypeName在集合中滚动所有TextBox。
具体来说,为什么我认为你遇到问题,或许可以使用实际的Worksheet对象遍历Worksheets集合,而不是变体。而且,由于它们是Worksheets对象,因此可以使用OLEObjects。
Dim sht As WorkSheet
Dim x as Integer
x = 1
For Each sht In ThisWorkbook.WorkSheets
Do Until sht.OLEObjects("TextBox & x") is Nothing
If sht.Name <> shtName Then sht.OLEObjects("TextBox & x").Object.Text = txt
x = x + 1
Loop
Next
即使在该循环中,您也可以执行另一个循环来迭代多个文本框。让我们知道您希望如何进行。希望这可以帮助...