找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 538|回复: 2

[编程申请]:编程求助!!!

[复制链接]
发表于 2004-2-4 10:27:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我刚刚开始学VBA编程,遇到以下问题,恳请各位高手赐教,谢谢!部分代码如下:

在模块级定义以下数据类型:
Type parray
  p(0 To 2) As Double
End Type
在窗体级定义通用过程:
Private Sub DWline(pt1 As parray, pt2 As parray)
Dim objContinuLine As Object
Set objContinuLine = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
  objContinuLine.Color = acByLayer
  objContinuLine.Layer = "0"
  objContinuLine.Update
End Sub
调用过程如下:
Dim  Ps(0 to 5)  AS  parray

Ps(0).p(0)=1:Ps(0).p(1)=1:Ps(0).p(2)=0
Ps(1).p(0)=5:Ps(1).p(1)=5:Ps(1).p(2)=0

CALL DWline(Ps(0).s,Ps(1).p0)

编译时出现“ByRef参数类型不符”,请问该如何解决?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

发表于 2004-2-4 11:48:03 | 显示全部楼层
是参数类型不对,AddLine之后跟的参数是Variant类型,即Double型的数组。而你传入的是Type类型,就不对了。
可以这样修改:
Private Sub DWline(pt1 As Variant, pt2 As Variant)
Dim objContinuLine As Object
Set objContinuLine = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
objContinuLine.Color = acByLayer
objContinuLine.Layer = "0"
objContinuLine.Update
End Sub
调用过程如下:
Dim Ps(0 to 2) AS Double
Dim Pe(0 to 2) AS Double
Ps(0)=1:Ps(1)=1:Ps(2)=0
Pe(0)=5:Pe(1)=5:Pe(2)=0

CALL DWline(Ps,Pe)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-2-4 14:46:21 | 显示全部楼层
谢谢你efan2000!按你说得我试过了,只要把参数Pt1的类型改为“Variant”就可以了,非常感谢你的指点!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-29 15:21 , Processed in 0.203007 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表