如何触发在多个工作表中输入所有文本框的按键? -VBA

时间:2019-03-13 07:27:51

标签: excel vba textbox userform autofilter

我的工作簿有三个带有文本框的工作表(名为Sheet1〜Sheet3)。

下面的代码在每张纸上

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)

If Not dontDoThat Then Synchronize Me.TextBox1.Text, Me.Name

Dim sht As Worksheet
Dim DataRange As Range
Dim mySearch As Variant

'Load Sheet into A Variable
Set sht = Me

'Filtered Data Range (include column heading cells)
Set DataRange = Me.ListObjects(1).Range 'Table

'Retrieve User's Search Input
mySearch = Me.OLEObjects("TextBox1").Object.Value

Select Case KeyCode
Case 13

'Filter Data
  DataRange.AutoFilter _
    Field:=3, _
    Criteria1:="=*" & mySearch & "*", _
    Operator:=xlAnd

Exit Sub
   End Select
End Sub

并且它有一个模块。

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

这些代码可以同步所有工作表上的文本框。

但这仅适用于文本。

如果我在Sheet1的TEXTBOX1中键入一些文本,则相同的文本将显示在所有其他表的TEXTBOX1中。

但是自动筛选器在其他纸张上不起作用。

在Sheet1的TEXTBOX1上键入一些文本并按Enter键后,自动筛选器仅在Sheet1中起作用。

我想触发所有工作表的文本框上的Enter键。

这些表还具有TEXTBOX2。因此,我想知道如何将同步应用于TEXTBOX1和TEXTBOX2。

我附加了一个excel示例文件和想要的结果图片。你可以在这里下载。 http://upload.ee/files/9683228/SAMPLE.zip.html

我想要两种类型的代码。

代码1:当我在工作表上的TEXTBOX1中键入一个字母并按Enter键时,它将同步所有工作表上的TEXTBOX1,然后在所有工作表上的TEXTBOX1中按Enter键。

代码2:当我在工作表上的TEXTBOX1或TEXTBOX2中键入一个字母并按Enter键时,它将同步所有工作表上的TEXTBOX1和TEXTBOX2,然后在所有工作表上的TEXTBOX1和TEXTBOX2中按Enter键。 / strong>

我需要别人的帮助。

0 个答案:

没有答案