vb写代码时出现实时错误‘91’,91 对象变量或withh块变量未设置要怎么解决

欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 7642 人关注过本帖
标题:实时错误91,对象变量或with块变量未设置~~如何解决
等 级:新手上路
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:17&&&
实时错误91,对象变量或with块变量未设置~~如何解决
Private Sub Command1_Click()
Dim part As Object
Dim strfilename As String
Dim longstatus As Long
Dim d1 As Integer
Dim d2 As Integer
Dim h As Single
If Dir(strfilename) = && Then
&&&MsgBox (&文件不存在,请检查路径:& & vbCrLf & strfilename)
&&&Exit Sub
strfilename = App.Path + &\& + &垫圈.sldprt&
Set swApp = CreateObject(&sldworks.application&)
swApp.Visible = True
Set part = swApp.opendoc4(strfilename, 1, 0, &&, longstatus)
Set part = swApp.ActivateDoc(&垫圈&)
ProgressBar1.Value = 4
d1 = Text1.Text
d2 = Text2.Text
h = Text3.Text
Debug.Print d1, d2, h
strfilename = &@垫圈.sldprt&
&&& part.Parameter(&d1 @ 草图2 & & strfilename).SystemValue = d1 / 1000
&&& part.Parameter(&d2 @ 草图2 & & strfilename).SystemValue = d2 / 1000
&&& part.Parameter(&h&&@ 拉伸1 & & strfilename).SystemValue = h / 1000
&&& part.EditRebulid
ProgressBar1.Value = 9
Set part = Nothing
Set swApp = Nothing
ProgressBar1.Value = 100
StatusBar1.Panels(1).Text = &更新结束&
在最后&&part.Parameter(&d1 @ 草图2 & & strfilename).SystemValue = d1 / 1000~~~调试时就会出现实时错误91,对象变量或with块变量未设置,有大神告诉怎么解决吗?
搜索更多相关主题的帖子:
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
&&得分:20&
1. strfilename 赋值应前置,否则永远找不到文件
strfilename = App.Path + &\& + &垫圈.sldprt&
If Dir(strfilename) = && Then
&&&MsgBox (&文件不存在,请检查路径:& & vbCrLf & strfilename)
&&&Exit Sub
2. swApp 应先定义再创建对象 (如使用Excel,则 Dim xlApp As New Excel.Application)
Dim swApp As ······
Set swApp = CreateObject(&sldworks.application&)
等 级:新手上路
回复 2 楼 owenlu1981
很感谢你的帮助。在我那样修改后,可以寻找到文件了,但是还是会出现那样的错误。修改后的代码如下:
Private Sub Command1_Click()
Dim part As Object
Dim strfilename As String
Dim longstatus As Long
Dim d1 As Integer
Dim d2 As Integer
Dim h As Single
strfilename = App.Path + &\& + &垫圈.sldprt&
If Dir(strfilename) = && Then
&&&MsgBox (&文件不存在,请检查路径:& & vbCrLf & strfilename)
&&&Exit Sub
Dim swApp As Object
Set swApp = CreateObject(&sldworks.application&)
swApp.Visible = True
Set part = swApp.opendoc4(strfilename, 1, 0, &&, longstatus)
Set part = swApp.ActivateDoc(&垫圈&)
ProgressBar1.Value = 4
d1 = Text1.Text
d2 = Text2.Text
h = Text3.Text
Debug.Print d1, d2, h
strfilename = &@垫圈.sldprt&
&&& part.Parameter(&d1 @ 草图2 & & strfilename).SystemValue = d1 / 1000
&&& part.Parameter(&d2 @ 草图2 & & strfilename).SystemValue = d2 / 1000
&&& part.Parameter(&h&&@ 拉伸1 & & strfilename).SystemValue = h / 1000
&&& part.EditRebulid
ProgressBar1.Value = 9
Set part = Nothing
Set swApp = Nothing
ProgressBar1.Value = 100
StatusBar1.Panels(1).Text = &更新结束&
调试时还是提示对象变量或with块变量未设置,可以能再帮我找下问题吗?万分感谢
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.PartDoc
Set swApp = CreateObject(&SldWorks.Application&)
Set Part = swApp.ActiveDoc
swApp.Visible = True
等 级:新手上路
回复 4 楼 owenlu1981
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.PartDoc
~~修改成这个会显示用户定义类型未定义。
关于之前那个调试问题出在
&Part.Parameter(&d1 @ 草图1 & & strfilename).SystemValue = d1 / 1000
~~是不是这里的问题呢?
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
回复 5 楼 ck3670
得先在工程-&引用里添加对象
比如程序中使用Excel,就得先应用 Microsoft Excel xx.0 Object Library
等 级:新手上路
回复 6 楼 owenlu1981
我这是用VB对solidworks的二次开发~~在引用那里把关于solidworks的都勾上了,还是不行。本人新手,希望能教下
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
出错语句或对象是?
等 级:新手上路
回复 8 楼 owenlu1981
出错语句一直都是
&part.Parameter(&d1 @ 草图1 & & strfilename).SystemValue = d1 / 1000
调试的错误就是实时错误91,对象变量或with变量未设置。
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
Set part = swApp.opendoc4(strfilename, 1, 0, &&, longstatus)
Set part = swApp.ActivateDoc(&垫圈&)
取消红色set试试,一个对象接连两次实例化肯定不合规矩。
版权所有,并保留所有权利。
Powered by , Processed in 0.067853 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved2011年1月 VB大版内专家分月排行榜第二2010年10月 VB大版内专家分月排行榜第二
2013年1月 VB大版内专家分月排行榜第三2012年12月 VB大版内专家分月排行榜第三2011年6月 VB大版内专家分月排行榜第三2011年2月 VB大版内专家分月排行榜第三2010年12月 VB大版内专家分月排行榜第三2010年11月 VB大版内专家分月排行榜第三2009年7月 VB大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。查看: 6042|回复: 9
提示错误:运行时错误91,对象变量或with块变量未设置
本帖最后由 klg1011 于
05:14 编辑
(112.38 KB, 下载次数: 10)
15:08 上传
点击文件名下载附件
请老师们帮忙看下该excel VBA代码,此代码有时候没问题,但我在SHEET表里稍微改动一些内容外,有时就又出现问题。鉴于此我每次都是备份了好几份备份,待出问题了再用没问题的excel文件重新来过。头痛啊,,,,,
问题代码处:Sheet1.AutoFilter.Range.SpecialCells(12).Copy Sheet2.Cells(1, 1)。提示错误:运行时错误91,对象变量或with块变量未设置。
参照论坛里的意见在该段代码前加上& &On Error Resume Next,之后不再提示错误。
但是所有“筛选”功能不起作用了。我研究了一下,发现时间段筛选代码&&失效。此代码一直没动过,原本没问题的。
请高手们指点指点!!
发现问题所在了:运行代码前,只要sheet1里的光标(即选中的单元格)定位在现有数据单元格内即第8行以上任一单元格,就能够正常筛选,不会出现问题。光标定位超出这个范围,程序就会出错。不明白为什么。
那么怎么样才能实现每次运行代码前保证sheet1里的光标定位在现有数据单元格内呢?或者是把光标指定到A1?
'筛选发货情况是否被选择
&&If boBox6 = &全部& Then
&&End If& &这怎么没条件啊&&就直接end if
Sheet1.AutoFilter.Range.SpecialCells(12) 如果提示with对象不存在,说明你没有定位到符合条件的单元格
我心飞翔410 发表于
'筛选发货情况是否被选择
&&If boBox6 = &全部& Then
如果&&=“全部”,即说明不考虑发货情况,所以就不再对发货情况进行筛选,直接就end if ,就不再需要添加针对发货情况的筛选条件了。针对这种情况,我只能想到这种办法实现。不知道有没有其他更好的,不过我觉得问题不应该出现在此段代码。还请老师指点。
klg1011 发表于
如果&&=“全部”,即说明不考虑发货情况,所以就不再对发货情况进行筛选,直接就end if ,就不再需要添加 ...
我也不太明白 只是感觉这样写 奇怪 我也是在学习阶段
Sheet1.AutoFilter.Range.SpecialCells(12)
这里用定位无果。
先把定位的值赋值给变量,再判断变量是否为NOTHING,这样比较安全可靠。
很多时候,写代码的时候还是得多考虑些非正常的情况。
hwc2ycy 发表于
先把定位的值赋值给变量,再判断变量是否为NOTHING,这样比较安全可靠。
很多时候,写代码的时候还是得多 ...
不太明白,能否再详细指点指点。
hwc2ycy 发表于
先把定位的值赋值给变量,再判断变量是否为NOTHING,这样比较安全可靠。
很多时候,写代码的时候还是得多 ...
发现问题所在了:运行代码前,只要sheet1里的光标(即选中的单元格)定位在现有数据单元格内即第8行以上任一单元格,就能够正常筛选,不会出现问题。光标定位超出这个范围,程序就会出错。不明白为什么。
那么怎么样才能实现每次运行代码前保证sheet1里的光标定位在现有数据单元格内呢?或者是把光标指定到A1?
(101.11 KB, 下载次数: 3)
08:18 上传
点击文件名下载附件
给你几个建议:
1.凡是参数有常量的用常量,不要用数值,像.SpecialCells(12),这样给阅读者造成不便。
2.凡是定义存储行列数量的变量,如果是10格式的话,尽是把数据类型定义为LONG,虽然用不到这么大,但是你这给代码留下了隐患。我刚刚无意中按了CTRL+A,结果就溢出了,一看原来你定义的是INTEGER。
Powered by我要活跃主题
查看: 19516|回复: 9
用vb二次开发sw时弹出错误:“对象变量或with块变量未设置”
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
用vb二次开发sw时,重新生成零件图时总是弹出错误:“对象变量或with块变量未设置”
而同样的方法有的零件就可以有的就不行,好象是旋转体就可以拉伸是不可以,不知道为什么!各位高手有谁知道这是怎么回事?请指教,谢谢!
&&程序大概如下:swapp,part,l0...这些变量都已经定义。
Private Sub Command1_Click()
Set swapp = CreateObject(&sldworks.application&)
swapp.Visible (True)
Set part = swapp.OpenDoc(App.Path & &\A型\2孔.sldprt&, 1)
Set part = swapp.ActivateDoc(&quotart1&)
part.Parameter(&d1@草图1&).SystemValue = l0/1000
....................
....................
part.EditRebuild
part.EditRebuild
本人正在进行此方面工作。可以交流一下:出现提示:“对象变量或with块变量未设置”的问题很多。建议你在SW中录制你所要进行的操作的完整的宏,复制到VB中,修改其中初始化的两条即可。另外OpenDoc应为OpenDoc6。从宏中可以看出来。
录制宏后运行时同样弹出此错误!这是不是和vb 没有关系啊?
解决了么?
我干过二次开发,不知能帮上忙不
&&&&&没有!
&&&&&我是第一次搞这些而且身边没人教,所以遇到这个问题不知道怎么解决,我试了好多办法都不行!更奇怪的是有的零件可以有的不可以,而且我把不能用的零件的程序拷贝到能用的零件的程序中修改成适合的尺寸后还是不能用所以我怀疑是sw中某些东西没设置好但就是不知道怎么弄。如果你认为是那有问题请给个意见,谢谢!
把这些都定义一次看看能解决么&
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long
Dim Annotation As Object
Dim Gtol As Object
Dim DatumTag As Object
Dim FeatureData As Object
Dim Feature As Object
Dim Component As Object&
要定义在public内
终于搞定了!!是下面的两句出错了!
Set part = swapp.OpenDoc(App.Path & &\A型\2孔.sldprt&, 1)
Set part = swapp.ActivateDoc(&quotart1&)
打开的 文件名和建立的名必须一样,只要把第二句的&part1&改为“2孔”就可以了。这是我在无意中发现的。
谢谢大家对我的帮助!把问题告诉大家,希望对大家有用!
谢谢,不过我发现还不是简单的这样的原因所在
我也遇到同样的问题!期待高手指点。
我也遇到同样的问题,期待高手指点
Powered by}

我要回帖

更多关于 实时公交解决方案 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信