我正在使用以下代码:
Sub DropDown1_Change()
With ThisWorkbook.Sheets("Dashboard").Shapes("Drop Down 1").ControlFormat
Select Case .List(.Value)
Case "Region1": Region0_Select
Case "Region2": Region1_Select
Case "Region3": Region2_Select
End Select
End With
End Sub
宏与excel表上的下拉列表有关。
有没有办法根据单元格值建立条件?即如果下拉列表等于单元格A1而不是“Region1”。
我尝试使用Range(“A1”)的东西。值无济于事。
答案 0 :(得分:1)
您可以在案例陈述中引用工作表范围中的值。
Sub DropDown1_Change()
Dim sDropDownVal As String
With ThisWorkbook.Sheets("Dashboard")
sDropDownVal = .Shapes("Drop Down 1").ControlFormat.List(.Value)
Select Case sDropDownVal
Case .Range("A1").Value
Call Region0_Select
Case .Range("B1").Value, .Range("B3").Value, .Range("B5").Value
Call Region1_Select
Case (.Range("C1").Value + 2) * 10
Call Region2_Select
Case Else
'---your code if no conditions met
End Select
End With
End Sub
对于更复杂的测试,您可以使用Select Case True来更灵活地测试是否符合条件。
此代码显示了一些不同的测试。
Sub DropDown1_Change2()
Dim sDropDownVal As String
With ThisWorkbook.Sheets("Dashboard")
sDropDownVal = .Shapes("Drop Down 1").ControlFormat.List(.Value)
Select Case True
Case sDropDownVal = .Range("A1").Value
Call Region0_Select
Case sDropDownVal >= .Range("B1").Value
Call Region1_Select
'--can evaluate more complex tests also
Case sDropDownVal = .Range("C1").Value And _
.Range("D1").Value = "Yes"
Call Region2_Select
Case Else
'---your code to execute if no conditions met
End Select
End With
End Sub
答案 1 :(得分:0)
我认为您只需要完全符合您的范围。
以下对我有用:
Sub DropDown1_Change()
Dim ws As Worksheet: Set ws = Thisworkbook.Sheets("Dashboard")
With ws.Shapes("Drop Down 1").ControlFormat
Select Case .List(.Value)
Case ws.Range("A1").Value: Region0_Select
Case ws.Range("A2").Value: Region1_Select
Case ws.Range("A3").Value: Region2_Select
End Select
End With
End Sub
或者你可以这样明确:
Case Is = ws.Range("A1").Value: Region0_Select
另请注意,必须在下拉中选择一些内容。