excel VBA如何创建下拉列表
问题描述:
我想使第二列中的所有行都是下拉列表。用户点击单元格并选择任何现有名称。excel VBA如何创建下拉列表
该怎么办?
当我运行这段代码它显示一个错误:
无效的或不合格的参考
代码:
Sub test()
Dim i As Integer
Dim OfficerList(4) As String
OfficerList(0) = "test1"
OfficerList(1) = "test2"
OfficerList(2) = "test3"
OfficerList(3) = "test4"
OfficerList(4) = "test5"
For i = Range("B5000").End(xlUp).Row To 2
Select Case VBA.CDate(Cells(i, 2))
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=Join(OfficerList, ",")
End Select
Next
For i = Range("C5000").End(xlUp).Row To 2 Step -1 'Range upto 5000, chnge this as per your requirment'
Select Case VBA.CDate(Cells(i, 3))
Case Is < VBA.Date()
Cells(i, 3).Interior.Color = vbGreen
Case Is = VBA.Date()
Cells(i, 3).Interior.Color = vbYellow
Case Is > VBA.Date()
Cells(i, 3).Interior.Color = vbRed
End Select
Next
End Sub
答
这似乎并不像Select Case
正确的地方:尝试这取代你的第一个循环
For i = Range("B5000").End(xlUp).Row To 2 Step -1
With Cells(i, 2).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(OfficerList, ",")
End With
Next i
而不是Select Case
,我只是使用With
,并确保指定您正在更改单元格的验证条目,并将环路更改为包括Step -1
(如您的第二个循环)。
+0
我试过你的答案,它没有使第二列中的所有单元格都成为下拉列表.....只是第二行显示下拉列表 –
+0
我们可以看看在你的工作表上?这可能有助于那部分。 –
答
看看这个。我也结合了你的循环。不知道你为什么倒退,但我已经离开它
Sub test()
Dim i As Long
Dim OfficerList(4) As String
OfficerList(0) = "test1"
OfficerList(1) = "test2"
OfficerList(2) = "test3"
OfficerList(3) = "test4"
OfficerList(4) = "test5"
' Update this with your sheet
With Sheet1
For i = .Range("B5000").End(xlUp).Row To 2 Step -1
With .Cells(i, 2).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=Join(OfficerList, ",")
End With
Select Case VBA.CDate(.Cells(i, 3))
Case Is < VBA.Date()
.Cells(i, 3).Interior.Color = vbGreen
Case Is = VBA.Date()
.Cells(i, 3).Interior.Color = vbYellow
Case Is > VBA.Date()
.Cells(i, 3).Interior.Color = vbRed
End Select
Next i
End With
End Sub
哪条线显示错误? – Tom
它确实显示行号只是编译错误与上面输入的错误 –
如果你然后按'调试'上弹出的消息它将突出显示有错误的行 – Tom