我正在尝试在 Excel 工作表的数据验证中选择一个值。
Set r = Sheets("DASHBOARD").Cells.Find(What:="Selection Location ->", LookAt:=xlWhole, searchorder:=xlByColumns, MatchCase:=False, SearchFormat:=False)
r.Offset(0, 1).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=List1"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
我的“List1”来自Names.Add
在上面几行定义的范围内。
现在已创建此列表,我希望 Excel 在数据验证中选择并显示新的第一个值,或者我在代码中选择的任何值。
我找不到任何有关通过 VBA 访问数据验证的信息。
我可以复制/粘贴我想要的值target.cell
,但是数据验证就会消失。
我刚刚注意到这个问题,它让我想起了我最近做的一个项目,其中一个很长的“站点”验证列表被“区域”分解,以减少用户必须执行的滚动量。与您的问题相关的是 - 一旦选择了一个区域,代码就会规定一个新的验证列表并显示该列表中的第一个新值。
我已经标记了相关的代码行:“
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyList As String
If Not Intersect(Range("L3"), Target) Is Nothing Then
With Sheet3.Range("L4:N4") 'These are merged cells
.ClearContents
.Validation.Delete
MyList = Sheet3.Range("L3").Value
.Validation.Add Type:=xlValidateList, Formula1:="=" & MyList
End With
Sheet3.Buttons("Button1").Caption = MyList
With Sheet3.Range("L4")
.Value = Sheet4.Range(MyList).Cells(1, 1).Value '<-THIS LINE
End With
End If
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)