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形状。