VB如何全局自定义数值或者函数,如何调用含有字符的运算?
问题一,如下Dimt1,t2,t3,t4,AsLong这个是在Command1_Click()定义的,我想在全局都用这几个定义,该如何实现?试了Form_Load()之下...
问题一,如下Dim t1, t2, t3, t4, As Long这个是在Command1_Click()定义的,我想在全局都用这几个定义,该如何实现?试了Form_Load()之下定义,却没反应?还有就是想定义Label1.Caption为l1之类的,该定义什么数值类型?
Private Sub Command1_Click()
Dim t1, t2, t3, t4, As Long
t1 = Val(Text1.Text)
t2 = Val(Text2.Text)
t3 = Val(Text3.Text)
t4 = Val(Text4.Text)
l1=Label1.Caption
l2=Label2.Caption
………………
问题二,我想用Label1.Caption = "预计" & t1 * t2这个计算出的数值再进行运算,可里面有"预计"这个字符,在Label2.Caption = "预计 " & Label1.Caption /3 中用什么方法去除?(不能直接调用t1 * t2,因为还有t3*t4,是个IF语句,所以必须去除"预计"这个字符)当然,如果在VB中不能去除的话,我就不加“预计”这个字,直接把这两个字建成独立label也行吧?可是有一二十个可不好弄啊。
大致如下
If t1 * t2 > t3 * t4 Then
Label1.Caption = "预计" & t1 * t2
ElseIf t1 * t2 > t3 * t4 Then
Label1.Caption ="预计" & t3 * t4
End If
Label2.Caption = "预计版数 " & Label1.Caption /3 ’这样是错误的,关键在这里,该怎么办? 展开
Private Sub Command1_Click()
Dim t1, t2, t3, t4, As Long
t1 = Val(Text1.Text)
t2 = Val(Text2.Text)
t3 = Val(Text3.Text)
t4 = Val(Text4.Text)
l1=Label1.Caption
l2=Label2.Caption
………………
问题二,我想用Label1.Caption = "预计" & t1 * t2这个计算出的数值再进行运算,可里面有"预计"这个字符,在Label2.Caption = "预计 " & Label1.Caption /3 中用什么方法去除?(不能直接调用t1 * t2,因为还有t3*t4,是个IF语句,所以必须去除"预计"这个字符)当然,如果在VB中不能去除的话,我就不加“预计”这个字,直接把这两个字建成独立label也行吧?可是有一二十个可不好弄啊。
大致如下
If t1 * t2 > t3 * t4 Then
Label1.Caption = "预计" & t1 * t2
ElseIf t1 * t2 > t3 * t4 Then
Label1.Caption ="预计" & t3 * t4
End If
Label2.Caption = "预计版数 " & Label1.Caption /3 ’这样是错误的,关键在这里,该怎么办? 展开
1个回答
展开全部
第一个问题,直接放在所有函数的最前面:
Option Explicit
Option Base 1
Dim t1, t2, t3, t4, As Long‘代码窗口第一句自己写的代码
……
private Sub Form1_load()
……
End Sub
private Sub Command1_click()
t1 = Val(Text1.Text)
t2 = Val(Text2.Text)
t3 = Val(Text3.Text)
t4 = Val(Text4.Text)
l1=Label1.Caption
l2=Label2.Caption
……
End Sub
……
,这就是全局变量的定义方法!还有一种方法就是在模块(Moudle)中定义,定义前面加前缀 public,即类似 public t1, t2, t3, t4, As Long
你的l1的类型必须是string: Dim l1 as string
第二个问题:试试Var(Label1.caption)函数,你会获得十分惊喜的结果,如果不行的话就用“var(right(Label1.caption,3,Len(Label1.caption)-2))"试一试,
Label2.caption="预计版数" & var(right(Label1.caption,Len(Label1.caption)-2))/3
说实话这个没有必要这么麻烦,定义一个变量存储一下计算结果就是了:
dim result as integer
If t1 * t2 > t3 * t4 Then
result=t1*t2
ElseIf t1 * t2 > t3 * t4 Then
result =t3 * t4
End If
Label1.Caption ="预计" & result
Label2.Caption = "预计版数 " & (result /3)
Option Explicit
Option Base 1
Dim t1, t2, t3, t4, As Long‘代码窗口第一句自己写的代码
……
private Sub Form1_load()
……
End Sub
private Sub Command1_click()
t1 = Val(Text1.Text)
t2 = Val(Text2.Text)
t3 = Val(Text3.Text)
t4 = Val(Text4.Text)
l1=Label1.Caption
l2=Label2.Caption
……
End Sub
……
,这就是全局变量的定义方法!还有一种方法就是在模块(Moudle)中定义,定义前面加前缀 public,即类似 public t1, t2, t3, t4, As Long
你的l1的类型必须是string: Dim l1 as string
第二个问题:试试Var(Label1.caption)函数,你会获得十分惊喜的结果,如果不行的话就用“var(right(Label1.caption,3,Len(Label1.caption)-2))"试一试,
Label2.caption="预计版数" & var(right(Label1.caption,Len(Label1.caption)-2))/3
说实话这个没有必要这么麻烦,定义一个变量存储一下计算结果就是了:
dim result as integer
If t1 * t2 > t3 * t4 Then
result=t1*t2
ElseIf t1 * t2 > t3 * t4 Then
result =t3 * t4
End If
Label1.Caption ="预计" & result
Label2.Caption = "预计版数 " & (result /3)
追问
第二问题的直接解释里的var和right函数我去查MSDN吧,先用方法二。
还有就是第一个问题,我这样你看对不对。
Private Sub Form_Load()
Dim t1, t2 As Long
Dim l1 As String
t1 = Val(Text1.Text)
t2 = Val(Text2.Text)
l1 = Label1.Caption
End Sub
Private Sub Command1_Click()
l1 = Str(t1 + t2)
End Sub
我是自学的,关于数值类型看着比较抽象,实例看的比较少,数值类型该怎么记啊,多谢多谢
追答
你这里的l1和load事件里定义的l1不是同一个变量,因为你的l1定义在load事件的内部,它的作用范围就是load事件,在其他的事件里这个变量是无效的,如果能用,就是因为没有加"option explicit"这句话,这句话的作用是强制要求变量定义之后才能使用,没有这句话是可以不定义变量而直接使用的。
另外你在load事件里检测了text1和text2的内容,如果用户又输入了其他的内容,很抱歉你的程序是检测不到的,load事件只在程序开始运行的时候执行一次,对程序开始之后发生的事情一无所知。
好好学吧,祝你学有所成!
数据类型没啥好办法,只能背了。不过各种高级程序设计语言数据类型大同小异,背了这次下次在学C,C++什么的就轻松了,除非你要学习汇编语言,否则你不需要在刻意背数据类型。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询