我正在设计一个PO,它会根据下拉列表中选择的项目更改每个单位的成本。
我正在使用......
Sub DropDown8_Change()
If (DropDown8.SelectedItem = "1") Then
Range("E21").Value = "54.90"
End If
End Sub
但是我收到了错误,
运行时错误'424':需要对象
如果我删除了IF语句并让它只是更改了Cell的内容,它就可以工作..所以我假设它是条件语句的问题。
从我在Visual Studio中使用Visual Basic的过去看来,Control的名称包含在Method中,所以我很困惑。我可能在这里犯了很多错误所以忍受我:)。
提前致谢
答案 0 :(得分:2)
在Excel工作表上使用Shapes有点烦人。如果可以的话,我通常会远离他们。
以下是您获取所需数据的方式:
Sub DropDown8_Change()
Dim selectedItem As String
Dim ws As Excel.Worksheet
Set ws = Sheets(1)
Dim selectedIndex As Long
selectedIndex = ws.Shapes("Drop Down 8").ControlFormat.Value
selectedItem = ws.Shapes("Drop Down 8").ControlFormat.List(selectedIndex)
If (selectedItem = "1") Then
Range("E21").Value = "54.90"
End If
End Sub
问题在于,为您生成的方法(在您的情况下为DropDown8_Change()
)并不能给您带来太多帮助(例如Worksheet_Change(ByVal Target As Range)
),你必须处理VBA Shapes(哎呀)。
你需要通过它的实际名称来引用Shape(除非你知道Shape的索引,它不容易确定)。通过右键单击形状,然后查看公式栏左侧的“范围地址”文本框,可以找到该名称。然后你必须通过整个ControlFormat篮球来获得你正在寻找的东西。
抱歉咆哮。我讨厌VBA Shapes。