【发布时间】:2021-07-13 15:16:09
【问题描述】:
我想通过 VBA EXCEL 代码创建数据验证列表,每个验证都来自一个动态更新的列表(例如,如果将项目添加到验证源列表,则范围将通过代码更新,而不是手动更新)。
我有很多这样的个人验证。
首先,我使用硬代码范围为每个验证创建了单独的 VBA 子程序,但这不是模块化的,代码用类似的代码重复自身,每次我需要更新源和目标范围或添加新的范围时,维护起来并不容易验证。它对编码错误很敏感,不得不提醒自己应该在代码中的确切位置写入范围。 我想要一个通用且模块化的 VBA 验证列表,我可以继续使用而无需一次又一次地重复相同的代码结构。
我有一个带有验证组合框的“数据”表和一个带有验证列表的“信息”表。
这是一个具有硬编码工作表和单元格范围的 VBA 验证结构示例。每次重写真的很头疼:
Public Sub HardcodedValidate()
Dim lastRowSource10 As Long
Dim rangeCombo10 As Range
Const F1_TransalteTo As String = "O"
Const F2_TransalteTo As String = "E"
lastRowCombo10 = 9999
lastRowSource10 = Transalte.Cells(Transalte.Rows.Count, "F").End(xlUp).Row
Set rangeCombo10 = Phones.Range(F2_TransalteTo & "2:" & F2_TransalteTo & lastRowCombo10)
With rangeCombo10.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Transalte!$F$2:$F$" & lastRowSource10
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = vbNullString
.ErrorTitle = vbNullString
.InputMessage = vbNullString
.ErrorMessage = vbNullString
.ShowInput = True
.ShowError = True
End With
End Sub
【问题讨论】:
标签: excel vba validation dropdown