Excel 向表中列中的所有单元格添加下拉列表
我做了一个教程,使下拉列表中的单元格,并提出了这个代码Excel 向表中列中的所有单元格添加下拉列表,excel,vba,Excel,Vba,我做了一个教程,使下拉列表中的单元格,并提出了这个代码 Sub test() AddYesNoDropdown ("H5") End Sub Public Function AddYesNoDropdown(r) With Range(r).Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetwe
Sub test()
AddYesNoDropdown ("H5")
End Sub
Public Function AddYesNoDropdown(r)
With Range(r).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Yes, No"
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = False
.ShowError = False
End With
End Function
我需要在命名表(ListObject?)中的每个单元格中执行此操作,以按名称引用列,而不是索引,以防表列被移动或重命名等
我尝试过上网搜索,也尝试过自己,但我不知道从哪里开始。一旦我开始尝试在一张桌子上做一些事情,它就会变得混乱…例如
不得不做
.ListColumns("Expected Ship Date?").Range.ColumnWidth = 10.14
而不是
.Columns("A").ColumnWidth = 10.14
我知道这可能很简单…您可以这样做,使用Match查找相关列,然后将表中的该列作为一个范围传递给您的函数。因此,这会将DV添加到该列中的每个单元格中
Sub test()
Dim v As Variant
With Sheet1.ListObjects("Table1")
v = Application.Match("Heading 2", .HeaderRowRange, 0) 'in my example returns 2
If IsNumeric(v) Then AddYesNoDropdown .ListColumns(v).DataBodyRange
End With
End Sub
Public Function AddYesNoDropdown(r As Range)
With r.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Yes, No"
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = False
.ShowError = False
End With
End Function
您可以这样做,使用Match查找相关列,然后将表中的该列作为一个范围传递给您的函数。因此,这会将DV添加到该列中的每个单元格中
Sub test()
Dim v As Variant
With Sheet1.ListObjects("Table1")
v = Application.Match("Heading 2", .HeaderRowRange, 0) 'in my example returns 2
If IsNumeric(v) Then AddYesNoDropdown .ListColumns(v).DataBodyRange
End With
End Sub
Public Function AddYesNoDropdown(r As Range)
With r.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Yes, No"
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = False
.ShowError = False
End With
End Function
完美。非常感谢。我相信这不是我引用ListObjects遇到的最后一个麻烦…很高兴它成功了。这里有一个很好的指南。非常感谢。我相信这不是我引用ListObjects遇到的最后一个麻烦…很高兴它成功了。这里有一个很好的导游