【发布时间】:2016-01-19 05:21:51
【问题描述】:
我是一个相对不了解的程序员,抱歉。
以下 Excel 2010 用户窗体命令按钮的代码返回应用程序定义或对象定义的错误。
Private Sub CommandButton1_Click()
Dim y, vfx, sapx, prx As String
y = Sheets(ComboBox1.Value).Range("B:B").Find(ComboBox2.Value).Row
vfx = Sheets(ComboBox1.Value).Range("1:1").Find("Vendor No").Column
sapx = Sheets(ComboBox1.Value).Range("1:1").Find("SAP Number").Column
prx = Sheets(ComboBox1.Value).Range("1:1").Find("Amey Price").Column
Lrow = Sheets("Macropage").Range("B:B")(Rows.Count).End(xlUp).Row
Userow = Lrow + 1
Sheets("Macropage").Range("A" & Userow) = ComboBox1.Value
Sheets("Macropage").Range("B" & Userow) = ComboBox2.Value
Sheets("Macropage").Range("C" & Userow) = Sheets(ComboBox1.Value).Cells(y, vfx).Value
Sheets("Macropage").Range("D" & Userow) = Sheets(ComboBox1.Value).Cells(y, sapx).Value
Sheets("Macropage").Range("E" & Userow) = Sheets(ComboBox1.Value).Cells(y, prx).Value
Sheets("Macropage").Range("A3:E" & Userow).Columns.AutoFit
Unload UserForm1
End Sub
导致错误的代码似乎是:Sheets(ComboBox1.Value).Cells(y, prx).Value,我通过将其粘贴在 MsgBox 中进行了验证。
prx 引用的列唯一不同的是它包含小数而不是一些文本。我不明白为什么这应该是个问题。
感谢任何信息,即使它只是关于应用程序定义或对象定义错误的性质。从谷歌搜索看来,这似乎只是意味着 Excel 在执行脚本时出现问题,即使编译器认为它没问题。
【问题讨论】:
-
您确定
prx有值吗?我会在那条线上放一个断点,然后在本地窗口中查看它的值。 -
而且,如果它没有值,我的猜测是没有“Amey Price”列。
-
Dim y, vfx, sapx, prx As String- 与您的问题无关,但您意识到只有prx实际上被声明为String对吧?其他的被隐式声明为Variant。
标签: vba excel-2010 userform