excel - 如何触发多个工作表中所有文本框的输入按键?- VBA
问题描述
我的工作簿有三张带 TEXTBOXES 的工作表(名为 Sheet1 ~ Sheet3)。
这有一个模块。
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。
但这仅适用于文本。
如果我在 Sheet1 的 TEXTBOX1 中键入一些文本,相同的文本将显示在所有其他工作表的 TEXTBOX1 中。
但搜索功能不适用于其他工作表。
在我在 Sheet1 的 TEXTBOX1 上输入一些文本后,当我按下回车键时,搜索功能仅在 Sheet1 中有效。
我想在所有表格的文本框上触发 enter 按键。
而且这些表也有TEXTBOX2。因此,我也想知道如何将同步应用于 TEXTBOX1 和 TEXTBOX2。
我需要有人帮助。
解决方案
Neo,我之前做过类似的事情 - 您可以使用 Change 事件或指定的 KeyDown 事件(通常是 Enter 键 - vbKeyReturn)创建自动过滤器。由于您使用的是 KeyDown 事件,因此使用集合不会过于详尽。例如,您可以按名称相似性或按TypeName将所有 TextBox 滚动到一个集合中。
具体来说,为什么我认为你有问题,也许循环通过 Worksheets 集合与一个实际的 Worksheet 对象,而不是一个变体。而且,由于它们是 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
即使在该循环中,您也可以执行另一个循环来遍历多个文本框。让我们知道您希望如何进行。希望这可以帮助...
推荐阅读
- azure - Azure Batch Service 在作为自定义活动运行时找不到 Az.DataFactory cmdlet
- java - 子类引用变量如何指向超类对象
- android - 动态更新文本视图的问题
- c++ - 使用 C++ 在二叉搜索树中存储值
- docker - kafka-connect 有时会在节点突然重启时丢失插件配置
- html - 防止雷鸟放大图像并将其用作链接
- linux - 在 golang 中运行命令并将其与进程分离
- docker - 不同的Docker容器链?
- python - 在python中连接计数变量和字符串
- c# - 如何使用 c# 使用 Visual Studio 代码引用程序集(Entity Framework System.Net)?