条件不符合的话,当然会不执行如果是比较值,改一下试试ElseIf Val(Text1.Text) > Val(form2!Text1(1).Text) And Val(Text1.Text) <= Val(form2!Text1(1).Text) + Val(form2!Text1(2).Text) Then Text2.Text = "OOXX"
Text1.Text 以后像这样的字符类型的数据比较前,记得转换数据类型 前面都加val函数,具体你自己加吧,我加了一个给你最例子 ElseIf val(Text1.Text) > form2!Text1(1).Text And Text1.Text <= form2!Text1(1).Text + form2!Text1(2).Text Then Text2.Text = "OOXX"
是比较值,而且这里面的值都是整数。我照着两位说的改了下可是还是不行Private Sub Cmdshow_Click() If Val(Text1.Text) <= Val(form2!Text1(1).Text) Then Text2.Text = "OOXX" ElseIf Val(Text1.Text) > Val(form2!Text1(1).Text) And Val(Text1.Text) <= Val(form2!Text1(1).Text) + Val(form2!Text1(2).Text) Then Text2.Text = "OOXX" End If End Sub这个是整个的代码,请看看有什么问题么?
设置断点,或在前面加上Stop语句,然后运行到了Stop语句后,按F8 单步运行,看它是怎么执行的,如果没执行到If条件里,说明是条件不符合Private Sub Cmdshow_Click() Stop If Val(Text1.Text) <= Val(form2!Text1(1).Text) Then ......
最好把各个值打印出来,看看到底是怎么回事Private Sub Cmdshow_Click() Debug.Print "Text1=" & Val(Text1.Text) Debug.Print "Form2!Text1(1)=" & Val(Form2!Text1(1).Text) Debug.Print "Form2!Text1(2)=" & Val(Form2!Text1(2).Text)If Val(Text1.Text) <= Val(Form2!Text1(1).Text) Then Text2.Text = "OOXX" ElseIf Val(Text1.Text) > Val(Form2!Text1(1).Text) And Val(Text1.Text) <= Val(Form2!Text1(1).Text) + Val(Form2!Text1(2).Text) Then Text2.Text = "OOXX" Else TExt2.Text="XXXX" End If End Sub
Private Sub Command1_Click() Dim i%, strTmp As String For i = Text1.LBound To Text1.UBound strTmp = strTmp & Text1(i).Text & "," Next strTmp = Left(Trim(strTmp), Len(Trim(strTmp)) - 1) Open App.Path & "\test.txt" For Output As #1 Print #1, strTmp '把控件数组的内容写入文件里 Close #1 Unload Me End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim i%, strTmp As String, strArr() As String Open App.Path & "\test.txt" For Binary As #1 strTmp = Space(LOF(1)) Get #1, 1, strTmp Close #1 strArr = Split(strTmp, ",") For i = LBound(strArr) To UBound(strArr) Text1(i).Text = strArr(i) Next End Sub这个是我的form2的代码,是我上一个问题,怎么设置20个值并且保存起来的问题的解决方法。 你看看有没有什么问题? 急死了
Text2.Text = "OOXX"
前面都加val函数,具体你自己加吧,我加了一个给你最例子
ElseIf val(Text1.Text) > form2!Text1(1).Text And Text1.Text <= form2!Text1(1).Text + form2!Text1(2).Text Then
Text2.Text = "OOXX"
If Val(Text1.Text) <= Val(form2!Text1(1).Text) Then
Text2.Text = "OOXX"
ElseIf Val(Text1.Text) > Val(form2!Text1(1).Text) And Val(Text1.Text) <= Val(form2!Text1(1).Text) + Val(form2!Text1(2).Text) Then
Text2.Text = "OOXX"
End If
End Sub这个是整个的代码,请看看有什么问题么?
else
text2.text="XXXX"
看看,如果加了以后出来XXXX,肯定是你的数据都不满足上两个条件
Stop
If Val(Text1.Text) <= Val(form2!Text1(1).Text) Then
......
Debug.Print "Text1=" & Val(Text1.Text)
Debug.Print "Form2!Text1(1)=" & Val(Form2!Text1(1).Text)
Debug.Print "Form2!Text1(2)=" & Val(Form2!Text1(2).Text)If Val(Text1.Text) <= Val(Form2!Text1(1).Text) Then
Text2.Text = "OOXX"
ElseIf Val(Text1.Text) > Val(Form2!Text1(1).Text) And Val(Text1.Text) <= Val(Form2!Text1(1).Text) + Val(Form2!Text1(2).Text) Then
Text2.Text = "OOXX"
Else
TExt2.Text="XXXX"
End If
End Sub
编译错误:无效的限定符,去掉stop以后还是提示这个然后去掉了所有的val,第一个判断可以执行,第二个判断就不行了
Debug.Print "Text1=" & Val(Text1.Text)
Debug.Print "Form2!Text1(1)=" & Val(Form2!Text1(1).Text)
Debug.Print "Form2!Text1(2)=" & Val(Form2!Text1(2).Text)If Val(Text1.Text) <= Val(Form2!Text1(1).Text) Then
Text2.Text = "aaa"
ElseIf Val(Text1.Text) > Val(Form2!Text1(1).Text) And Val(Text1.Text) <= Val(Form2!Text1(1).Text) + Val(Form2!Text1(2).Text) Then
Text2.Text = "bbb"
Else
TExt2.Text="ccc"
End If
End Sub运行结果是
直接点按钮aaa
然后输入任何数字都是ccc
你的问题在于你的粗心,代码绝对没问题,我自己执行了
If Val(Text1.Text) <= Val(Form2!Text1.Text) Then
Text2.Text = "1"
ElseIf Val(Text1.Text) > Val(Form2!Text1.Text) And Val(Text1.Text) <= Val(Form2!Text1.Text) + Val(Form2!Text2.Text) Then
Text2.Text = "2"
Else
Text2.Text = "3"
End If我的form2中的text1=20 ,text2=40
在form1中的text1=11时,text2=1
text1=22时,text2=2
text1=66时,text2=3自己好好检查下你的数据吧
上面的程序是0,1,2这三个数字是aaa
3,4,5,6是bbb
后面的都是ccc可是我设置的范围应该是0-2000,2000-4000,4000-请问这个是怎么回事?而且在下面“立即”窗口中显示
Form2!Text1(1)=2
Form2!Text1(2)=3
Dim i%, strTmp As String
For i = Text1.LBound To Text1.UBound
strTmp = strTmp & Text1(i).Text & ","
Next
strTmp = Left(Trim(strTmp), Len(Trim(strTmp)) - 1)
Open App.Path & "\test.txt" For Output As #1
Print #1, strTmp '把控件数组的内容写入文件里
Close #1
Unload Me
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim i%, strTmp As String, strArr() As String
Open App.Path & "\test.txt" For Binary As #1
strTmp = Space(LOF(1))
Get #1, 1, strTmp
Close #1
strArr = Split(strTmp, ",")
For i = LBound(strArr) To UBound(strArr)
Text1(i).Text = strArr(i)
Next
End Sub这个是我的form2的代码,是我上一个问题,怎么设置20个值并且保存起来的问题的解决方法。
你看看有没有什么问题?
急死了
Form2!Text1(1)=2
Form2!Text1(2)=3立即窗口都显示数据了,还在这说设置的范围是0-2000,2000-4000,4000-,老大,几天没睡了,你的范围是>=2,2-5,>5才对啊,赶快洗个热水澡,身体要紧