回 帖 发 新 帖 刷新版面

主题:VB小问题

Private Sub Command1_Click()
  Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
  End
End Sub
Private Sub Form_Load()
  Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
  Dim x, y As Long
    x = Text1.Text
    y = Text2.Text
    If Text1.Text = "" Then x = 0
    If Text2.Text = "" Then y = 0
    Text3.Text = x * 3600 + y * 60
    If Text3.Text > 0 Then
      Text3.Text = Text3.Text - 1
    ElseIf Text3.Text = 0 Then
      Form2.Show
      Form1.Hide
      End
    End If
End Sub
当我运行时在X里输数值运行错误,在Y里输数值可以运行,但是Z里得到的数值不梯减。请问是哪里出了问题?具体程序看附件

回复列表 (共10个回复)

沙发


板凳


你把X定义为双精度,把if text3.text>0 then该为if val(text3.text)>0 then这样试一试!

3 楼

本来就不会递减的。每次text3.text的值都是固定的,因为text1和text2的值并没变啊!

4 楼

错误一、声明类型错误: Dim x, y As Long中x为变体变量,y为长整形。
所以Text3.Text = x * 3600 + y * 60会出错!
……………………下次提问,要把错误在那里,什么提示说清楚。
错误二、text3的内容不变:正如“天天学习”所说。
废代码两行(If Text1.Text = "" Then x = 0    If Text2.Text = "" Then y = 0
),
修改如下:
 点击下载附件

Dim x  As Long, y As Long,  z as long
Private Sub Command1_Click()
  Timer1.Enabled = True
    x = Text1.Text
    y = Text2.Text
    z= x * 3600 + y * 60
End Sub

Private Sub Command2_Click()
  End
End Sub

Private Sub Form_Load()
  Timer1.Enabled = False
  timer1.interval=1000
End Sub
 
Private Sub Timer1_Timer()
    z=z-1    
    Text3.Text=z
    If z= 0 Then
      Form2.Show
      Form1.Hide
      End
    End If
End Sub

5 楼

老大徒伤悲

If Text1.Text = "" Then x = 0
If Text2.Text = "" Then y = 0
谢谢你们的回答,但是我这两行代码的含义是当文本1不输数值的时候把0赋给X,或文本2不输数值的时候把0赋给Y。现在这两个代码不起作用了,请问应该用什么代码。

6 楼

还有就是怎么使text里的数值居中,label中的文字居中

7 楼

当text1、text2为空,且x、y为数值类型变量的情况下,执行
    x = Text1.Text
    y = Text2.Text
x、y自动为零。

8 楼

关于,textbox里面的内容居中,你看textbox属性如果有就参照,没有就算了。
这样的事情我从来没有想过。

9 楼

现在明白了,但是要这样写才没有错误提示
    x = val(Text1.Text)
    y = val(Text2.Text)
那怎么限制在文本里只能输0-99的一位和两位数呢,就是按第3个数值的时候文本里没反应。

10 楼

你不能一次把问题说吗?
你查吧,本版块这个问题的帖子不下10个。

我来回复

您尚未登录,请登录后再回复。点此登录或注册