vba 对象变量或with块未设置

With Sheet2.Columns("b:b")
On Error GoTo Finish
Set e = .Find(c1, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False, SearchFormat:=False)
Sheet1.Range("g" & f) = Sheet2.Cells(e.Row, 1)‘问题出在这个地方
Finish:
End With
c1是个字符串

vba 对象变量或with块未设置是设置错误造成的,解决方法为:

1、首先打开excle软件,在菜单中选择“开发工具”-》“Visual Basic”,进入VBA的编程界面。

2、选择一个对象,这里选择sheet1,新建一个子过程setobgjs。

3、首先是声明对象变量,通过Dim来声明,和普通变量的声明很类似,只不过是数据类型变为了Object,如: Dim obj1 As Object。

4、设置该对象变量的值,可以通过set方法来设置,如Set obj1 = Range("A1")。

5、对这个对象所表示的边框设置底色,为黄色。

6、最后选择“运行”按钮运行。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-01
1、这个错误有时候是指所引用的对象并不存在,或者没有初始化,当继续使用这个对象的属性或者方法时,就会出现“对象变量或者with块变量未设置”的错误提示。
2、造成这种错误的原因:
1)该引用的对象库没有引用,去工具菜单下单击引用,选择应该引用的对象库。
2)写错了控件名,修改成对应控件即可。
3)使用数据库对象时没有打开数据库,设置数据源,然后打开数据库。
第2个回答  2015-12-30
对象变量或 With 块变量没有设置(错误 91)

创建对象变量有两个步骤。第一,必须先声明对象变量。然后必须用 Set 语句将一个正确的引用赋值给对象变量。同样地,With...End With 块必须先用 With 语句进入点来执行初始化。此错误有以下的原因和解决方法:

试图使用的对象变量,还没有用一个正确对象的引用来赋值。
给对象变量指定或再指定一个引用。例如,如果在下列的代码中省略 Set 语句的话,那么引用 MyObject 将会产生错误:

Dim MyObject As Object ' 创建对象变量。
Set MyObject = Sheets(1) ' 创建一个正确的对象引用。
MyCount = MyObject.Count ' 计数值赋给 MyCount。

试图用的对象变量已经被设为 Nothing。
Set MyObject = Nothing ' 释放此对象。
MyCount = MyObject.Count ' 引用了已释放的对象。

再指定引用给对象变量。例如,使用新的 Set 语句给对象设置新的引用。

此对象是正确的对象,但没有被设置,因为在对象库中,在 “引用” 对话框中没有被选取。
在 “添加引用” 对话框选择对象库。

在 With 块内GoTo 语句的去向。
不要跳进 With 块。确保块使用 With 语句进入点以执行初始化。

当选了 “设置下一条语句” 命令时,在 With 块内指定了一行。
With 块必须用 With 语句执行初始化。
第3个回答  2015-11-01

对象变量或 With
块变量没有设置(错误 91)

创建对象变量有两个步骤。第一,必须先声明对象变量。然后必须用
Set 语句将一个正确的引用赋值给对象变量。同样地,With...End With 块必须先用
With 语句进入点来执行初始化。此错误有以下的原因和解决方法:


*试图使用的对象变量,还没有用一个正确对象的引用来赋值。

给对象变量指定或再指定一个引用。例如,如果在下列的代码中省略 Set 语句的话,那么引用 MyObject 将会产生错误:

Dim MyObject As Object    ' 创建对象变量。
Set MyObject = Sheets(1)    ' 创建一个正确的对象引用。
MyCount = MyObject.Count    ' 计数值赋给 MyCount。

*试图用的对象变量已经被设为 Nothing。

Set MyObject = Nothing    ' 释放此对象。
MyCount = MyObject.Count    ' 引用了已释放的对象。

再指定引用给对象变量。例如,使用新的 Set 语句给对象设置新的引用。


*此对象是正确的对象,但没有被设置,因为在对象库中,在
“引用” 对话框中没有被选取。

在 “添加引用” 对话框选择对象库。


*在 With 块内GoTo 语句的去向。

不要跳进 With 块。确保块使用 With 语句进入点以执行初始化。


*当选了 “设置下一条语句” 命令时,在 With 块内指定了一行。

With 块必须用 With 语句执行初始化。

第4个回答  推荐于2017-10-08

Sheet1.Range("g" & f) = Sheet2.Cells(e.Row, 1)‘问题出在这个地方
 前面加上一句:

if e is nothing then msgbox "没有找到改数据" :exit sub
Sheet1.Range("g" & f) = Sheet2.Cells(e.Row, 1)‘问题出在这个地方

本回答被提问者采纳