我知道这个问题已被多次发布。但我只是无法正常工作,我尝试了许多方法。
我有code
,当在rows
中输入特定的sheet
时,它会自动将特定的value
复制到新的Column B
。但这仅在将marco分配给按钮并手动触发时才会发生。复制多个行时,这不是很有效。尤其是当您复制数百行且只有最后几行实际更改时。我希望输入该值后会自动发生。
所以我的first
sheet
被称为MASTER
,而second
sheet
被称为CON
。在Change of Numbers
中输入MASTER
后,我想将这些rows
自动复制到工作表CON
中。
下面的此code
位于Master
Sheet
(这是第一个)中。当将值输入script
时,此Columns
用于隐藏/取消隐藏特定的Column B
。
主表
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
On Error GoTo safe_exit
Application.EnableEvents = False
Dim t As Range
For Each t In Intersect(Target, Range("B:B"))
Select Case (t.Value)
Case "Change of Numbers"
Columns("B:BP").EntireColumn.Hidden = False
Columns("H:BL").EntireColumn.Hidden = True
'do nothing
End Select
Next t
End If
safe_exit:
Application.EnableEvents = True
End Sub
以下script
位于sheet
CON
(第二张纸)中。该script
用于auto-copy
的{{1}},其中rows
在X
的{{1}}中输入。但是,我必须将此宏分配给此工作表上的按钮。然后,每次触发宏时,它将抓取所有指定的行。
CON SHEET
Column A
但是,如果不手动运行脚本,这仍然行不通。
答案 0 :(得分:2)
如果您的第一个子项目完全按预期工作,则您需要做的只是Call
事件中的子项目。请注意,由于Worksheet_Change
宏已设置,因此只有在Worksheet_Change
Column A
答案 1 :(得分:2)
您的代码没有监视任何事件的发生。您想要的特定事件是Worksheet_Change()
事件,这是我在您提供的第二个代码片段中看到的。
因此,您可以采用以下两种方法。一种是将整个代码复制并粘贴到该事件中,或者两种(通常是首选)是在事件处理程序中调用该子程序。
但是,要让 Worksheet 监视 Change Event ,您需要将其放入工作表的代码模块中。在VBE中,您将看到Sheet1
,Sheet2
等
我的建议是,将您的Sub FilterAndCopy()
放在标准模块中。然后在Sheet1
的代码模块中,添加:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrHandler
'Test if criteria is met
If Intersect(Target, Columns("A")) Is Nothing Then
Exit Sub
ElseIf Target.Value = "mySpecificValue" Then
Application.EnableEvents = False
FilterAndCopy
Dim t As Range
For Each t In Intersect(Target, Range("a:a"))
Select Case UCase(t.Value)
Case "X"
Columns("B:C").EntireColumn.Hidden = True
Columns("D:E").EntireColumn.Hidden = False
Case "Y"
Columns("B:C").EntireColumn.Hidden = False
Columns("D:E").EntireColumn.Hidden = True
Case Else
'do nothing
End Select
Next t
End If
ErrHandler:
If Err.Number <> 0 Then
Rem: Optional - Error message and/or err recovery
End If
Application.EnableEvents = True
End Sub