+ -
当前位置:首页 → 问答吧 → 有一段建立用户坐标系的代码,可是运行出错,求高手

有一段建立用户坐标系的代码,可是运行出错,求高手

时间:2011-09-22

来源:互联网

Sub BuildUserCoordinate()
Dim RX: Scale
RX = MinX + ScaleWidth / ScaleHeight * (MaxY - MinY)
Scale (MinX - (RX - MinX) * 0.02, MaxY + (MaxY - MinY) * 0.05)-(RX + (RX - MinX) * 0.08, MinY - (MaxY - MinY) * 0.05)
End Sub
 
倒数第二条语句提示除数为0。能不能讲讲这个代码是啥意思啊

作者: sutzlx   发布时间: 2011-09-22

ScaleHeight * (MaxY - MinY) ==0?

作者: ybh37   发布时间: 2011-09-22

MaxY - MinY = 0

MaxY = MinY ??

MaxY 、MinY在哪定义的,是否为全局变量。

作者: chinaboyzyq   发布时间: 2011-09-22

建议楼主单步调试一下,看看每个变量的具体值,这样问题就很容易分析出来了。

作者: Veron_04   发布时间: 2011-09-22

minx,miny,maxx和maxy是xy轴的最大、最小坐标,是从一个数据文件中读出来的
引用 2 楼 chinaboyzyq 的回复:

MaxY - MinY = 0

MaxY = MinY ??

MaxY 、MinY在哪定义的,是否为全局变量。

作者: sutzlx   发布时间: 2011-09-22

不是这条语句出错,是Scale (MinX - (RX - MinX) * 0.02, MaxY + (MaxY - MinY) * 0.05)-(RX + (RX - MinX) * 0.08, MinY - (MaxY - MinY) * 0.05)这个提示除数为0
引用 1 楼 ybh37 的回复:

ScaleHeight * (MaxY - MinY) ==0?

作者: sutzlx   发布时间: 2011-09-22

引用 5 楼 sutzlx 的回复:
不是这条语句出错,是Scale (MinX - (RX - MinX) * 0.02, MaxY + (MaxY - MinY) * 0.05)-(RX + (RX - MinX) * 0.08, MinY - (MaxY - MinY) * 0.05)这个提示除数为0

引用 1 楼 ybh37 的回复:

ScaleHeight * (MaxY - MinY) ==0?

这句里面有除数吗?

作者: Veron_04   发布时间: 2011-09-22

Dim RX: Scale
这是什么意思啊,:相当于重启以行,那你的代码应该相当于运行了一次scale

作者: worldy   发布时间: 2011-09-22

引用 5 楼 sutzlx 的回复:

不是这条语句出错,是Scale (MinX - (RX - MinX) * 0.02, MaxY + (MaxY - MinY) * 0.05)-(RX + (RX - MinX) * 0.08, MinY - (MaxY - MinY) * 0.05)这个提示除数为0引用 1 楼 ybh37 的回复:

ScaleHeight * (MaxY - MinY) ==0?


有时候会出现这种错误,我也百思不得其解。我的解决方法,不怎么好,但一般可以解决问题,原理望高手们分析。
当然首先要保证代码中的值是正确的。
VB code

Sub BuildUserCoordinate()
    Dim RX, Scale
subHeader:
    on error resume next
    RX = MinX + ScaleWidth / ScaleHeight * (MaxY - MinY)
    Scale (MinX - (RX - MinX) * 0.02, MaxY + (MaxY - MinY) * 0.05)-(RX + (RX - MinX) * 0.08, MinY - (MaxY - MinY) * 0.05)
    if err.number<>0 then
        DoEvents
        goto subHeader
    end if
End Sub

作者: wolfcapita   发布时间: 2011-09-22

用了你的方法,程序是运行了,不出错,但是没有结果了。结果显示不出来
引用 8 楼 wolfcapita 的回复:

引用 5 楼 sutzlx 的回复:

不是这条语句出错,是Scale (MinX - (RX - MinX) * 0.02, MaxY + (MaxY - MinY) * 0.05)-(RX + (RX - MinX) * 0.08, MinY - (MaxY - MinY) * 0.05)这个提示除数为0引用 1 楼 ybh37 的回复:

ScaleHeight * (MaxY -……

作者: sutzlx   发布时间: 2011-09-22

单步根跟看看会不会出错呢?

作者: wolfcapita   发布时间: 2011-09-22

我那个方法是程序运行时报错,单步跟踪不报错的解决办法。

作者: wolfcapita   发布时间: 2011-09-22

引用 8 楼 wolfcapita 的回复:
引用 5 楼 sutzlx 的回复:

不是这条语句出错,是Scale (MinX - (RX - MinX) * 0.02, MaxY + (MaxY - MinY) * 0.05)-(RX + (RX - MinX) * 0.08, MinY - (MaxY - MinY) * 0.05)这个提示除数为0引用 1 楼 ybh37 的回复:

ScaleHeight * (MaxY - ……


变量定义为scale,scale函数功能就会丧失

作者: worldy   发布时间: 2011-09-22

Scale (1, 1)-(2, 2) 正确

Scale (1, 1)-(1, 1) 错误
Scale (1, 1)-(2, 1) 错误
Scale (1, 1)-(1, 2) 错误

两坐标(纵坐标和横坐标)间要有距离才是正确的,
任何两个坐标点没有距离都是错误的,因为你是要缩放一个范围。

错误时VB提示被0除。

作者: chinaboyzyq   发布时间: 2011-09-22

热门下载

更多