VB程序为什么不能正常运行

Misaya灬岳桦 2019-05-13 07:27:02
简单介绍一下这个程序下面是一个窗体的源代码
毕设差不多是照搬了一本书的一个程序 比较大 敲完书上的源代码后 各种修改后无报错(其实也就改了声明变量的访问权限 源代码是private 改成了public 不然一直报子程序或函数未定义)改了之后就不报了 下面代码只是一个部分 还有一部分全部是自定义的函数 我放到模块里面了 FORM1.Show 其实我还是不太懂为什么要这一步 因为我觉得没有用 按照设想 应该是一运行程序 会弹出InputBox 就如下面代码说的一样 然后一步一步来 也不用在窗体添加什么控件 (我是这么想的 ) 可是不报错运行 只出来一个FORM1的空白页面 并不会在往下运行 请大佬指点 各种搜也搜不出来 毕设比较着急 有偿我也是能接受的 主要太小白了 .....希望大佬帮帮忙
我的QQ是 957844622
下面代码是form2的全部代码和 模块里面的一个自定义函数的一部分 主要是太长了就没复制完 就这么多分...希望有大神帮忙...有偿.....
Private Sub Form_Load()
Form1.Show
FileName = InputBox("输入保存计算成果文件名")
FileName = App.Path & FileName
Open FileName For Output As #2
Inp '调用子程序调入数据
If g = "p" Then BB_17
f = 2 * (z - v) - 1: f1 = f + d0 + t0
ReDim c(f1, f1), b1(f), b2(f)
pq1: For i = 0 To f1: For j = 0 To f1: c(i, j) = 0: Next j: Next i
If g = "p" Then
ReDim l(f1)
For i = 0 To f1: l(i) = 0: Next i: ll = 0
End If
If m2 > 0 Then
For a = st + 1 To z
c1 = 0
For i = 0 To f: b2(i) = 0: Next i
p1 = q(a - st): q1 = q(a + 1 - st) - 1
For o = p1 To q1
If aa = "aal" Then
b = h1(o): m = 0
Else
BB_7
End If
bb = "l": cc = "n": BB_10: p = 1
If g = "p" Then
If r(o) < 0.01 Then e2 = t
e3 = t - e2 - r(o)
If e3 < -180 Then e3 = e3 + 360
e3 = e3 * 3600: ll = ll + e3 * e3: e1 = e1 + e3
End If
BB_13
For i = 0 To f: b2(i) = b2(i) + b1(i): Next i
If m > 0 And a < b Then BB_11: BB_13
Next o
cc = "n": p = -1 / (q1 - p1 + 1)
For i = 0 To f: b1(i) = b2(i): Next i
If g = "p" Then e3 = e1: ll = ll + p * e3 * e3
BB_13
Next a
End If
If aa = "aa1" Then
For a = 1 To a
For o = n(a - 1) To n(a) - 1
cc = "n": BB_7
If a < b Then BB_11: BB_13
Next o
Next a
End If
If t0 > 0 Then
cc = "y": bb = "1"
For i = 1 To t0
a = Fix(ha(i)): b = CInt((ha(i) - a) * 100): BB_10: p = 1
If g = "p" Then
e3 = t - a1(i)
If e3 < -180 Then e3 = e3 + 360
e3 = e3 * 3600
If v = 1 Then ll = ll + e3 * e3
End If
m = d0 + i: BB_13
Next i
End If
For i = 1 To f1
For j = i To f1
For k = 0 To i = 1
c(i, j) = c(i, j) - c(k, i) * c(k, j) / c(k, k)
Next k
Next j
Next i
For k = f1 To 0 Step -1
e1 = -1
For i = k To 0 Step -1
If i < k Then e1 = 0
For j = i To f1 - 1
If j + 1 < k Then
e2 = c(k, j + 1)
Else
e2 = c(j + 1, k)
End If
e1 = e1 + c(i, j + 1) * e2
Next j
c(k, i) = -c1 / c(i, i)
Next i
Next k
If g = "p" Then
For i = 0 To f1
e1 = 0
For j = 0 To f1
If i < j Then
e2 = c(j, i)
Else
e2 = c(i, j)
End If
e1 = e1 - e2 * l(j)
Next j
If i < -f Then
If (i + 2) / 2 - Int((i + 2) / 2) Then
x(i / 2 + 1 + v) = x(i / 2 + 1 + v) + e1 / 100
Else
y((i - 1) / 2 + 1 + v) = y((i - 1) / 2 + 1 + v) + e1 / 100
End If
End If
ll = ll + e1 * l(i)
Next i
If m2 = 0 Then m2 = z
e = m1 + m2 + t0 - 3 * z + 2 * v
m0 = Sqr(Abs(ll / e))
Else
m0 = mr
End If
Print #2, Spc(5); "单位权中误差=+/-"; Format(m0, "#.0000")
If g = "p" Then
Print #2, Spc(5); "编号纵坐标平差值(m)横坐标平差值(m)"
For i = 1 To z
Print #2, Spc(7); i; Spc(10); Format(x(i), "#.0000"); Spc(12); Format(y(i), "#.0000")
Next i
End If
Print #2, "起点号 终点号 方位角方位角中误差边长边长中误差边长相对中误差分母"
For a = st + 1 To z
If aa = "aa1" Then
j = n(a - 1): k = n(a) - 1
Else
j = q(a - st): k = q(a - st + 1) - 1
End If
For o = j To k
b = CInt(Fix(h(o)))
If a > b Or (a <= v And b <= v) Then
Else
bb = "1": BB_10: BB_12
Print #2, Spc(2); a; Spc(3); b;
Print #2, Spc(4); Format(dms(t), "#.000000"); Spc(6); Format(e7, "#.000")
If Abs(e6) < 0.000001 Then
Print #2,
Else
Print #2, Spc(9); Format(100 * Fix(s / e7), "#")
End If
End If
Next o
Next a
Print #2, Spc(5); "待定点号 Mx My M E F Q "
For k = v + 1 To z
p1 = 2 * (k - v - 1): e1 = Abs(c(p1, p1))
e2 = Abs(c(p1 + 1, p1 + 1)): e3 = c(p1 + 1, p1)
Print #2, Spc(7); k
e4 = m0 * Sqr(e1): e5 = m0 * Sqr(e2): e6 = Sqr(e4 ^ 2 + e5 ^ 2)
Print #2, Spc(7); Format(e4, "#.000")
Print #2, Spc(4); Format(e5, "#.000")
Print #2, Spc(4); Format(e6, "#.000")
If e1 - e2 <> 0 Then
BB_15
Print #2, Spc(4); Format(e4, "#.000")
Print #2, Spc(3); Format(e5, "#.000")
Print #2, Spc(5); Format(dms(e7), "#.0000")
Else
Print #2,
End If
Next k
Print #2, Spc(5); "起点号终点号相对误差椭圆长半径相对误差椭圆短半径长半径方向"
701: jk = InputBox("以XX,XX形式输入需计算相对误差椭圆的两待定点点号" & vbCrLf & "如输入0则转入下一步计算")
If jk <> 0 Then BB_14: GoTo 701
Close #2
sWord '调用子程序在word上显示计算成果
End
End Sub
还有一个Inp自定义函数
Sub Inp() '调入数据并保存
strDataFileName = InputBox$(" 数据库文件名")
dbPath = App.Path & strDataFileName
Set db = OpenDatabase(dbPath)
strSQL = "SELECT * FROM tablel"
Set Rs = db.OpenRecordset(strSQL)
aArray = Rs.GetRows(7)
v = aArray(1, 0)
z = aArray(2, 0)
m1 = aArray(3, 0)
m2 = aArray(4, 0)
t0 = aArray(5, 0)
aa = aArray(6, 0)
g = aArray(7, 0)
If g = "平差与精度评定" Then
Print #2, Spc(27); "平差网平差成果"
ElseIf g = "精度估算" Then
Print #2, Spc(27); "平面网精度估算成果"
End If
Print #2, Spc(5); "已知点数="; v
Print #2, Spc(5); "总点数="; z
Print #2, Spc(5); "已知边和观测边数="; m1
Print #2, Spc(5); "方向观测数="; m2
Print #2, Spc(5); "已知坐标方位角数="; t0
Print #2, Spc(5); "网型:"; aa
Print #2, Spc(5); "平差与精度评定还是精度估算:"; g
If aa = "三边网" Then
aa = "aa1"
ElseIf aa = "三角网" Then
aa = "aa2"
ElseIf aa = "导线网与边角网" Then
aa = "aa3"
End If
If g = "平差与精度评定" Then g = "p"
If g = "精度估算" Then g = "q"
If g = "p" Then
dd = InputBox("一般网还是特殊网" & vbCrLf & "一般网按n健,特殊网按y键")
Print #2, Spc(5); "一般网还是特殊网"
If dd = "n" Then
Print #2, "一般网"
ElseIf dd = "y" Then
Print #2, "特殊网"
End If
End If
If m1 > 0 Then
d0 = Val(InputBox("已知边数"))
mc = Val(InputBox("固定误差"))
pp = Val(InputBox("比例误差"))
Print #2, Spc(5); "已知边数="; d0
Print #2, Spc(5); "固定误差="; mc
Print #2, Spc(5); "比例误差="; pp
End If
If aa = "aa3" Then
st = Val(InputBox("导线网中未设站观测的已知点数"))
Print #2, Spc(5); "导线网中未设站观测的已知点数="; st
Else
st = 0
End If
If m2 < 1 Then '纯测边网取1KM边长观测作为单位权观测
mr = mc + pp / 10
Print #2, Spc(5); "单位权中误差先验值="; mr
ElseIf m1 < 1 And g = "p" Then
ElseIf g = "q" Or (m1 > 0 And m2 > 0) Then '如果精度估算或有边和方向两种观测量
mr = Val(InputBox("输入方向观测单位权中误差先验值"))
Print #2, Spc(5); "单位权中误差先验值="; mr
End If
Print #2, Spc(5); "编号纵坐标(m)横坐标(m)"
ReDim x(z), y(z)
If g = "q" Then
vz = z
Else
vz = v
End If
strSQL = "SELECT*FROM table2"
Set Rs = db.OpenRecordset(strSQL)
aArray = Rs.GetRows(3 * vz)
For j = 0 To UBound(aArray, 2)
x(j + 1) = aArray(1, j): y(j + 1) = aArray(2, j): Print #2, Spc(7); j + 1
Print #2, Spc(11); Format(x(j + 1), "#.0000"); Spc(9); Format(y(j + 1), "#.0000")
Next j
If dd = "y" And g = "p" Then
ReDim x0(v), y0(v)
For j = 1 To v
x0(j) = x(j): x(j) = 0: y0(j) = y(j): y(j) = 0
Next j
End If
If t0 > 0 Then
Print #2, Spc(5); "编号起点号。终点号坐标方位角(dms)"
If g = "q" Then
i = 2: ReDim ha(t0)
ElseIf g = "p" Then
i = 3: ReDim a1(t0), ha(t0)
End If
...全文
1981 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Misaya灬岳桦 2019-05-20
  • 打赏
  • 举报
回复
今天才有空弄了一下....算是弄明白了这个东西 结贴结贴 以后还请各位大神朵朵关照
ElectricKang 2019-05-15
  • 打赏
  • 举报
回复
这个应该是缺少文件了吧
milaoshu1020 2019-05-15
  • 打赏
  • 举报
回复
打开工程时提示缺少Module1.bas文件;
Misaya灬岳桦 2019-05-15
  • 打赏
  • 举报
回复
今天先写论文了 等明天再给各位大神结贴... 再次感谢
Misaya灬岳桦 2019-05-14
  • 打赏
  • 举报
回复
引用 10 楼 舉杯邀明月 的回复:
[quote=引用 9 楼 Misaya灬岳桦 的回复:]
[quote=引用 8 楼 脆皮大雪糕 的回复:]
搞了半天,你的项目启动窗体是form1 但是form1启动后并没有任何事件去触发后续的事情啊。比如form1_onload事件里面去调用一下你的程序逻辑入口,或者一个按钮onclick的时候去调用啥的都行啊。
如果启动窗体设置为form2,就能有所动作,因为你的form2的on_load事件里面干活了呀

你的意思是吧第二行 form1.show改为form2.show么 其实我也不理解源代码作者为什么要加一行form1.show[/quote]

1. 你的代码“工程”包含两个Form ,但是 Form1却基本“无作用”。
2. 按你目前的“工程”结构,应该把“启动窗体”设置为Form2(目前是Form1);
  这样改了之后,去掉Form1、并把 Form2的 Form_Load( )中的那句 Form1.Show 去掉,
 运行效果及各种“状态”,都“不会有变化”。
3. 按你目前的那个代码,其实不用任何窗口都可以。就用一个标准模块,写一个 Sub Main( ) ,
 然后把 Form2中的代码复制到Sub Main中去,移除那两个Form。
 然后“最终效果”也跟你目前没什么区别(除了“不会出现两个空白窗口”之外)。

剩下的,就是你的代码Bug问题了,比如:
FileName = App.Path & FileName

一般应该写成这样才对:
FileName = App.Path & "\" & FileName
(一般在输入文件名时,恐怕不会特意的在前面添加个 \ 字符吧!!!)

还有没有其它的问题,我也没细看了…………
[/quote]
谢谢各位大神指点 感激涕零 明天等我试验一下 跪服!
舉杯邀明月 2019-05-14
  • 打赏
  • 举报
回复
引用 9 楼 Misaya灬岳桦 的回复:
[quote=引用 8 楼 脆皮大雪糕 的回复:]
搞了半天,你的项目启动窗体是form1 但是form1启动后并没有任何事件去触发后续的事情啊。比如form1_onload事件里面去调用一下你的程序逻辑入口,或者一个按钮onclick的时候去调用啥的都行啊。
如果启动窗体设置为form2,就能有所动作,因为你的form2的on_load事件里面干活了呀

你的意思是吧第二行 form1.show改为form2.show么 其实我也不理解源代码作者为什么要加一行form1.show[/quote]

1. 你的代码“工程”包含两个Form ,但是 Form1却基本“无作用”。
2. 按你目前的“工程”结构,应该把“启动窗体”设置为Form2(目前是Form1);
  这样改了之后,去掉Form1、并把 Form2的 Form_Load( )中的那句 Form1.Show 去掉,
 运行效果及各种“状态”,都“不会有变化”。
3. 按你目前的那个代码,其实不用任何窗口都可以。就用一个标准模块,写一个 Sub Main( ) ,
 然后把 Form2中的代码复制到Sub Main中去,移除那两个Form。
 然后“最终效果”也跟你目前没什么区别(除了“不会出现两个空白窗口”之外)。

剩下的,就是你的代码Bug问题了,比如:
FileName = App.Path & FileName

一般应该写成这样才对:
FileName = App.Path & "\" & FileName
(一般在输入文件名时,恐怕不会特意的在前面添加个 \ 字符吧!!!)

还有没有其它的问题,我也没细看了…………
milaoshu1020 2019-05-14
  • 打赏
  • 举报
回复
先告诉我们,你这个程序的主要功能是干什么的?
Misaya灬岳桦 2019-05-14
  • 打赏
  • 举报
回复
引用 8 楼 脆皮大雪糕 的回复:
搞了半天,你的项目启动窗体是form1 但是form1启动后并没有任何事件去触发后续的事情啊。比如form1_onload事件里面去调用一下你的程序逻辑入口,或者一个按钮onclick的时候去调用啥的都行啊。
如果启动窗体设置为form2,就能有所动作,因为你的form2的on_load事件里面干活了呀

你的意思是吧第二行 form1.show改为form2.show么 其实我也不理解源代码作者为什么要加一行form1.show
脆皮大雪糕 2019-05-14
  • 打赏
  • 举报
回复
搞了半天,你的项目启动窗体是form1 但是form1启动后并没有任何事件去触发后续的事情啊。比如form1_onload事件里面去调用一下你的程序逻辑入口,或者一个按钮onclick的时候去调用啥的都行啊。 如果启动窗体设置为form2,就能有所动作,因为你的form2的on_load事件里面干活了呀
Misaya灬岳桦 2019-05-14
  • 打赏
  • 举报
回复
引用 1 楼 脆皮大雪糕 的回复:
只给了个vbp,还有form1 和 form2 呢
整个文件夹打包好么?不要舍不得舍不得的。

....抱歉抱歉....因为换了电脑...form1 form2 格式之前在文件夹里补一个位置...我没看到....我甚至不知道完整的文件包括啥....后来又找到传上去啦....麻烦啦..
链接: https://pan.baidu.com/s/1mAt7iXAnn7CQjMq6bDvEdQ 提取码: djsb 复制这段内容后打开百度网盘手机App,操作更方便哦
脆皮大雪糕 2019-05-14
  • 打赏
  • 举报
回复
只给了个vbp,还有form1 和 form2 呢 整个文件夹打包好么?不要舍不得舍不得的。
Misaya灬岳桦 2019-05-14
  • 打赏
  • 举报
回复
引用 4 楼 milaoshu1020 的回复:
把VB6工程的所有文件上传到百度网盘上,然后在这里贴一下共享地址吧;
只看部分代码不知道问题出在哪里.

好的好的 已经上传了 下面是链接
因为子函数调用的问题我实在解决不了 于是把大部分声明的变量和BB_XX 自定义函数的访问权限从private改成了public
那些自定义函数在form1和模块里面都有 因为纯小白 所以希望大佬们理解
链接: https://pan.baidu.com/s/1reB_Jctm-JGgUBw8Xm_Myw 提取码: bp9f 复制这段内容后打开百度网盘手机App,操作更方便哦
milaoshu1020 2019-05-14
  • 打赏
  • 举报
回复
把VB6工程的所有文件上传到百度网盘上,然后在这里贴一下共享地址吧;
只看部分代码不知道问题出在哪里.
Misaya灬岳桦 2019-05-14
  • 打赏
  • 举报
回复
引用 2 楼 milaoshu1020 的回复:
先告诉我们,你这个程序的主要功能是干什么的?

是一个平差程序 应该是程序读入数据后进行处理 然后输出平差结果 在load里面的代码我认为是主函数 运行它来调用其他自定义函数来进行平差计算 然后输出平差结果
你有没有遇到过这样的情况: 重装了系统后(安装原版或者某种定制版系统),直接运行重装系统前已经用过的 QQ、迅雷 等软件出现报错或者不能运行;又或者有一些绿色软件,直接运行会出现报错的提示,不能正常运行。 原因很可能是系统缺少了这些软件需要依赖的库文件,导致它们不能正常运行(比如 QQ 和 迅雷 需要依赖 VC++ 库,有些绿色软件需要依赖 VC++ 库或 VB 库)。遇到这类情况,要不就直接重装 QQ 或 迅雷 等的官方原版软件,要不就把相关的运行库复制到系统中。 这个“常用运行库”包的就是为了解决这类问题而生的,原版系统自带的运行库比较旧且数量少,而这个包则涵盖了目前各个版本的运行库和常用的控件,可以起到增强系统的作用。 这是装完系统后必装的东西,就像Flash插件以及DirectX一样! 否则你用原版系统,精简系统,绿色软件,精简软件...等,总提示缺少... 如果你已经安装了部分,也可直接安装,会自动跳过已安装过的运行库. 本工具可以解决重装了系统后(安装原版或者某种定制版系统),直接运行重装系统前已经用过的 QQ、迅雷 等软件出现报错或者不能运行;又或者有一些绿色软件,直接运行会出现报错的提示,不能正常运行。 本工具就是为了解决这类问题而生的,原版系统自带的运行库比较旧且数量少,而这个包则涵盖了目前各个版本的运行库和常用的控件,可以起到增强系统的作用。 Microsoft VB/VC Runtime Library Build 201009 notes: Visual Basic Virtual Machine (5.1) Visual Basic Virtual Machine (6.0) Microsoft C Runtime Library (7.0) Microsoft C Runtime Library (7.10) Microsoft Visual C++ 2005 SP1 (8.0.59193) Microsoft Visual C++ 2008 SP1 (9.0.30729) Microsoft Visual C++ 2008 ATL Update kb973924 (9.0.30729.4148) 更新说明: 2010-9-17 更新部分VC7.0文件 2010-2-12 更新VC8.0ATL补丁 2010-1-15 更新VC8.0至59193

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧