我已经添加VBA编码做列表数据验证。数据列表来自工作表名称“3”,单击时下拉列表将出现在工作表名称“4”中。第三张表中的数据是动态的,我可以在其中添加更多的列表。问题是,当我在表“3”的数据中添加新项目时,列表不更新添加的新数据。只有当我点击运行宏时它才起作用。如何使它动态和表中的列表“4”自动更新每当我把新的项目内的数据表“3”。
下面是我的编码:
Sub setupDV()
Dim rSource As Range, rDV As Range, r As Range, csString As String
Dim c As Collection
Set rSource = Sheets("3").Range("C8:C1000")
Set rDV = Sheets("4").Range("C8")
Set c = New Collection
csString = ""
On Error Resume Next
For Each r In rSource
v = r.Value
If v <> "" Then
c.Add v, CStr(v)
If Err.Number = 0 Then
If csString = "" Then
csString = v
Else
csString = csString & "," & v
End If
Else
Err.Number = 0
End If
End If
Next r
On Error GoTo 0
'MsgBox csString
With rDV.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=csString
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End Sub
字符串
我希望当我在工作表“3”的数据中添加新项目时,工作表“4”的项目列表自动更新,而无需单击运行宏。
2条答案
按热度按时间rmbxnbpk1#
工作表变更:自动验证
的数据
事件(调用)过程:薄板模块,例如
Sheet3(3)
字符串
标准模块中的外部事件测试器,例如
Module1
型
**标准模块中的方法,例如
Module1
型
deyfvvtc2#
STEP1:将
Sub setupDV()
放入module
中,以从Change
事件调用。STEP2:为Sheets(“3”)添加
Change
事件处理程序。字符串
顺便说一句,你可以最小化
setupDV()
中的rSource
范围以提高性能。型