主题:语法小问题
caline
[专家分:20] 发布于 2009-02-17 09:46:00
在VB6中遇到个小问题:
IF a=....... then b=.....
IF c=.... then d=.....
END IF '只有一个ENDIF
.....
在调试时总是提示ENDIF没有IF
第一次遇到时把语法的位置调整了一下,就是断句的问题,没当回事,昨天晚上再次遇到,并且语句特别简单,我就不懂了,来问问各位高手,这是怎么回事??
回复列表 (共9个回复)
沙发
tanchuhan [专家分:15140] 发布于 2009-02-17 11:03:00
不用End If
板凳
老大徒伤悲 [专家分:29120] 发布于 2009-02-17 11:23:00
书写格式问题。if语句共有三种格式:
1、if……then……
这种格式,不能使用else子句,不需要endif。
2、if……then
……
else
……
endif
这种格式,条件成立时的执行语句不能写在then的后面,要另起一行。
else子句可以省略,但endif不能省略。
3、if……then
……
elseif……then
……
else
……
endif
用法同前。
3 楼
一江秋水 [专家分:9680] 发布于 2009-02-17 12:04:00
补充:
2楼所说的第一种格式
if……then……
后面可以使用else子句,但不需要end if,格式:
if....then....else....
4 楼
老大徒伤悲 [专家分:29120] 发布于 2009-02-17 15:30:00
谢谢秋水指正
5 楼
caline [专家分:20] 发布于 2009-02-18 15:13:00
还是有点不明白!因为我还遇见了一次这样的事
for i=2 to n
for j=2 to m
if Worksheets("Sheet1").Cells(i, 2) = Worksheets("Sheet2").Cells(j, 2).Value
then cells(n,3)=cells(j,3)
cells(n,4)=cells(j,4)
cells(n,5)=cells(j,5).........
[color=FF00FF]句子没完全正确写下来,意思明白就行[/color] next
next
运行后他只执行THEN后的第一句,第二和以后的就不运行,我当时只好一句一执行,后来加了ENDIF就行了
前面几位高手说下什么问题?
6 楼
tanchuhan [专家分:15140] 发布于 2009-02-18 17:55:00
你这样写应该语法错误了吧?
[quote]
Private Sub Form_Load()
If True
Then End
End Sub
[/quote]
语法错误,没法通过编译
7 楼
caline [专家分:20] 发布于 2009-02-19 09:10:00
忘了说明,那个双循环是在VBA中
For i = 2 To 206
For j = 2 To 371
If Worksheets("Sheet2").Cells(i, 2) = Worksheets("Sheet3").Cells(j, 13).Value _
Then Worksheets("Sheet2").Cells(i, 20).Value = Worksheets("Sheet3").Cells(j, 4)
Worksheets("Sheet2").Cells(i, 21).Value = Worksheets("Sheet3").Cells(j, 5)
Worksheets("Sheet2").Cells(i, 22).Value = Worksheets("Sheet3").Cells(j, 4)
Next j
Next i
这是原语句,意思是SHEET3中与SHEET2中某列中的一个值相同时,把SHEET3的相同值的列的那一列的数据复制到SHEET2中以方便制表和数据计算
但是我的问题还是存在,执行后THEN后第一句执行正确,第二句以后的SHEET2的应复制的数据全复制的是SHEET3最后一个J值的数据!
只加了个ENDIF后数据就正确了!
大家继续指教下哈!
8 楼
tanchuhan [专家分:15140] 发布于 2009-02-19 14:32:00
[quote] If Worksheets("Sheet2").Cells(i, 2) = Worksheets("Sheet3").Cells(j, 13).Value _
Then Worksheets("Sheet2").Cells(i, 20).Value = Worksheets("Sheet3").Cells(j, 4)[/quote]
等价于
[quote] If Worksheets("Sheet2").Cells(i, 2) = Worksheets("Sheet3").Cells(j, 13).Value Then Worksheets("Sheet2").Cells(i, 20).Value = Worksheets("Sheet3").Cells(j, 4)[/quote]
"_"是连接符,连接下一行
9 楼
caline [专家分:20] 发布于 2009-02-20 09:24:00
收到,明白
多谢指教!
我来回复