应用程序定义或对象定义错误 excel

Dim row1 As Long
If Cells(row1, "A") = 日期1.Value Then
111.Value = Cells(row1, "B")
222.Value = Cells(row1, "C")
333.Value = Cells(row1, "D")
444.Value = Cells(row1, "E")
555.Value = Cells(row1, "F")
End If

想通过编程,在窗体的文字框内输入日期后点击查询,窗体上相应文字框输出日期所在行对应的内容,以上是代码,运行后提示第二行“应用程序定义或对象定义错误”,请老师们帮忙看一下应该怎么改正?

软件版本:Office2007

方法如下:

    在VBA中如果使用了系统不认可的对象表示方法等,例如下面的Range表示方法,系统就不认可:

    这样,在运行程序时,就会提示错误:

    将代码中的错误更正,用正确的表示方法来使用对象或应用程序,就不会出错了:


温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15
楼主一定是初次接触VBA。
If Cells(row1, "A") = 日期1.Value Then

【row1】是什么,变量?请为他赋值,如果指的是第一行,请用Cells(1,1);
日期1又是什么?猜测是文本框,那最好用【Me.日期1】来说明清楚;
【111.Value】肯定不合法,因为【111】不可能是一个对象、(以下同)追问

嗯嗯,我是新手,让老师见笑了。row1想表示所查日期在的那一行,行数不确定,应该怎么赋值?后面想在另一些文本框内输出所查行对应其他内容。111.value是我后来改的,因为涉及公司工作内容。代码中是汉字.value,“汉字”是文本框名称。

追答

那就先应该在表中日期所在列去查找,比如类似=Range.Find
模拟代码:
Sub test()
Dim c As Range
Set c = Range("A:A").Find(CDate(日期1.Value))
If Not c Is Nothing Then
汉字1.Value = c.Offset(, 1)
汉字2.Value = c.Offset(, 2)
汉字3.Value = c.Offset(, 3)
汉字4.Value = c.Offset(, 4)
汉字5.Value = c.Offset(, 5)
End If
End Sub

本回答被提问者和网友采纳
第2个回答  2017-07-11
可以如下方式解决:
1、当按F5键,就报:运行时错误1004。可以这样操作,单击文件――选项――信任中心――打开“信任中心”对话框,宏设置――勾选“信任对VBA工程对象模型的访问”。再次运行,就不会出现运行时错误1004提示。

2、再在搜索引擎查询,才知道运行时错误1004不只是在上面这种情况才会有提示。比如通过使用 Visual Basic 对应用程序的宏创建一个数组公式时您也可能会收到运行时错误1004提示提示信息。造成excel vba输入公式出现运行时错误1004的原因:当试图将传递一个包含超过 255 个字符的公式时,会发生此问题,并为应用程序中 Visual Basic 中使用 FormulaArray 属性。
第3个回答  2016-06-26
Cells(dic(s_v),11)不对。dic(s_v)返回的只是空值,造成cells引用错误。以i=3时为例,1)Workbooks("ITS电气元器件库.xlsm").Worksheets("Sheet1")的D3单元格的值如果是数字,那么直接引用就好了,不必再加个dic捣乱了。改成Cells(s_v,11)即可2)如果是别的文本之类的需要转换成数字的,需要看具体情况而定。追问

我没太看懂哈,Cells(dic(s_v),11),dic(s_v)是什么意思?我写的cells(row1,“A”)是想定位查询日期所在的行,后面的111.Value = Cells(row1, "B")等,是想将此行后面的内容显示在文本框中。

相似回答