hchm 发表于 2008-12-20 18:33:00

请教VB,实时变量或with变量未设置

本帖最后由 作者 于 2008-12-20 18:34:55 编辑 <br /><br /> <p>请教,VB编写的,出现错误为实时错误“91”,(实时变量或with变量未设置)。代码如下:</p><p>&nbsp;&nbsp;&nbsp; Dim AcadApp As AcadApplication<br/>&nbsp;&nbsp;&nbsp; Dim AcadDocs As AcadDocuments<br/>&nbsp;&nbsp;&nbsp; Dim AcadDoc As AcadDocument<br/>&nbsp;&nbsp;&nbsp; Dim MoSpace As AcadModelSpace<br/>&nbsp;&nbsp;&nbsp; Public ztxzhtwzl1(0 To 2) As Double '块的插入位置1,m<br/>&nbsp;&nbsp;&nbsp; Dim xzllblock As AcadBlockReference '声明块的变量</p><p>Sub huatu()<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; ztxzhtwzl1(0) = 15000: ztxzhtwzl1(1) = 5000: ztxzhtwzl1(2) = 0 ' 块的插入位置1,m<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp; If ModuleMenj.lzzzzl = 5 Then<font color="#0000ff">‘(说明:ModuleMenj.lzzzzl 是一个其它模块中的已知变量)</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set xzllblock = AcadDoc.ModelSpace.InsertBlock(ztxzhtwzl1, "D:\portal crane\wheel\5wl.dwg", 1, 1, 1, 0)’将D:\portal crane\wheel\</p><p>&nbsp;&nbsp;&nbsp; ElseIf ModuleMenj.lzzzzl = 6 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set xzllblock = AcadDoc.ModelSpace.InsertBlock(ztxzhtwzl1, "D:\portal crane\wheel\6wl.dwg", 1, 1, 1, 0)</p><p>&nbsp;&nbsp;&nbsp; ElseIf ModuleMenj.lzzzzl = 8 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set xzllblock = AcadDoc.ModelSpace.InsertBlock(ztxzhtwzl1, "D:\portal crane\wheel\8wl.dwg", 1, 1, 1, 0)</p><p>&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; <font color="#ff0000">xzllblock.Explode‘(此句出现错误)<br/></font>&nbsp;&nbsp;&nbsp; xzllblock.Update<br/>&nbsp;&nbsp;&nbsp; ZoomAll<br/>End Sub</p><p></p><p>请问是怎么回事?怎样修改?谢谢!</p>

woaishuijia 发表于 2008-12-21 13:32:00

本帖最后由 作者 于 2008-12-21 13:34:53 编辑 <br /><br /> 仔细看看你的代码,如果<font color="#0000ff">ModuleMenj.lzzzzl</font><font color="#000000">不等于5,也不等于6,也不等于8,程序会怎么样呢?会直接去执行</font><font color="#ff0000">xzllblock.Explode</font><font color="#000000">。可这时块参照还没有插入,</font><font color="#ff0000">xzllblock</font><font color="#000000">还是nothing啊</font>,你这不是逼着寡妇生孩子吗?

兰州人 发表于 2008-12-21 15:59:00

<p>关键点是</p><p>Set xzllblock =XX ,在本地窗口看,xlaablokc是否为Nothing,</p><p>要是为Nothing.就会出现<strong>实时变量或with变量未设置的情况出现</strong>.</p>

mccad 发表于 2008-12-21 17:34:00

<p>在End if 前面加上</p><p>Else<br/>&nbsp;Exit Sub</p><p>以避开出错的可能。</p><p>另外,你必须保证你的文件是存在的。</p><p>也可以写成:<br/>Set xzllblock = AcadDoc.ModelSpace.InsertBlock(ztxzhtwzl1, "D:\portal crane\wheel\" <font color="#ff3300">&amp; ModuleMenj.lzzzzl&nbsp;&amp;</font> "wl.dwg", 1, 1, 1, 0)</p><p>现加上出错判断,来简化程序。</p><p>写程序一定要能够针对各种可能的错误,不然给自己用都不及格,就不要说给别人了。</p>
页: [1]
查看完整版本: 请教VB,实时变量或with变量未设置