18063219
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看18063219的 主题 / 回贴
楼主  发表于: 2010-04-29 13:45
某程序的功能是a1<=q<a2,Shape1.FillColor = vbGreen;q<a4,Shape1.FillColor = vbRed
a2<=q<a3,Shape2.FillColor = vbGreen,Shape2.FillColor = vbGreen  ;q<a5,Shape2.FillColor = vbRed
a3<=q<15,Shape3.FillColor = vbGreen,Shape2.FillColor = vbGreen,Shape1.FillColor = vbGreen;q<a6,Shape3.FillColor = vbRed
我写的程序存在的问题:shape1显示正常,其余两个显示绿色没问题,但若要显示红色不能显示,任然是绿色,不发生变化。
Private Sub Command2_Click()
Const pi = 3.14159
Dim t As Single, y As Single, p As Single
Dim a1 As Single, a2 As Single, a3 As Single, a4 As Single, a5 As Single, a6 As Single, q As Single



a1 = Val(Text1.Text)
a2 = Val(Text2.Text)
a3 = Val(Text3.Text)
a4 = Val(Text4.Text)
a5 = Val(Text5.Text)
a6 = Val(Text6.Text)
For t = 0 To 24 Step 0.0003
y = -2 * Sin(t * pi / 1.5) + 3

p = y / 5
Text8.Height = Text7.Height * (1 - p)
q = p * 15
Text9.Text = q
Shape1.Refresh
DoEvents
Select Case q


Case 0 To a4
Shape1.FillColor = vbRed
Case a1 To a2
Shape1.FillColor = vbGreen


Case a4 To a5
Shape2.FillColor = vbRed
Case a2 To a3
Shape2.FillColor = vbGreen
Shape1.FillColor = vbGreen


Case a5 To a6
Shape3.FillColor = vbRed
Case a3 To 15
Shape3.FillColor = vbGreen
Shape2.FillColor = vbGreen
Shape1.FillColor = vbGreen


End Select
Next t
End Sub
[ 此帖被18063219在2010-04-29 20:41重新编辑 ]
ydp
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看ydp的 主题 / 回贴
1楼  发表于: 2010-04-30 12:24
問題找到了,a1 = Val(Text1.Text),這樣的寫法,是取整數,而且 你設置的是有小數點
本帖最近评分记录:
  • 下载积分:+1(vili) 热心助人
    ydp
    级别: *
    精华主题: * 篇
    发帖数量: * 个
    工控威望: * 点
    下载积分: * 分
    在线时间: (小时)
    注册时间: *
    最后登录: *
    查看ydp的 主题 / 回贴
    2楼  发表于: 2010-04-30 12:25
    兩種解決問題,一就,你把所有數據都變大100倍,不要小數(好多似類的數量都是這樣數)
    本帖最近评分记录:
  • 下载积分:+1(18063219)
  • 下载积分:+1(vili) 热心助人
    ydp
    级别: *
    精华主题: * 篇
    发帖数量: * 个
    工控威望: * 点
    下载积分: * 分
    在线时间: (小时)
    注册时间: *
    最后登录: *
    查看ydp的 主题 / 回贴
    3楼  发表于: 2010-04-30 12:26
    另外一種就,你把字符串,轉為FU點數
    ydp
    级别: *
    精华主题: * 篇
    发帖数量: * 个
    工控威望: * 点
    下载积分: * 分
    在线时间: (小时)
    注册时间: *
    最后登录: *
    查看ydp的 主题 / 回贴
    4楼  发表于: 2010-04-30 12:33
    Dim a1 As Double
    Dim a2 As Double
    Dim K as double //定義水位
    a2 = CDbl(Text1.Text)
    a2 = CDbl(Text1.Text)
    k = CDbl(水位的字符串)
    if k <= a2 then
      Shape1.FillColor = vbRed
    end if
    if k >= a1 then
      Shape1.FillColor = vbGreen
    end if
    本帖最近评分记录:
  • 下载积分:+1(vili) 热心助人