Excel Visual Basic代码问题
我正在devise一个采购订单,根据在下拉列表中select的项目来更改每单位的成本。
我在用着…
Sub DropDown8_Change() If (DropDown8.SelectedItem = "1") Then Range("E21").Value = "54.90" End If End Sub
但是,我得到的错误,
运行时错误“424”:需要的对象
如果我删除IF语句,并只是改变单元格的内容,它的工作..所以我假设这是一个与条件声明的问题。
从Visual Studio中的Visual Basic过去,控制的名称包含在方法中,所以我很困惑。 我可以做很多错误,所以忍受我:)。
提前致谢
在Excel工作表上处理形状是很烦人的。 如果可以,我通常会远离他们。
以下是您如何获取您要查找的数据:
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形状呸)。
你需要通过它的实际名称来引用形状(除非你知道形状的索引,这是不容易确定的)。 可以通过右键单击形状,然后查看公式栏左边的范围地址文本框中find该名称。 然后你必须通过这整个ControlFormat箍来得到你要找的东西。
对不起,咆哮。 我讨厌VBA形状。