topor 发表于 2009-7-31 10:27:11

VBS用while/wend遍历excel的语句问题

Excel 中有三行数据,如图一所示:
我写了一段代码想把每一行都设值为90,代码如下:
    Dim ExcelApp,ExcelWorkBook,ExcelSheet
    Dim Row
    Row=1
    Set ExcelApp = CreateObject("Excel.Application")
    ExcelApp.Workbooks.Add
    ExcelApp.Visible = True
    Set ExcelWorkBook = ExcelApp.Workbooks.Open("C:\test.xls")
    Set ExcelSheet=ExcelWorkBook.Worksheets(1)
    While ExcelSheet.Cells(Row,1).Value <> Null
       ExcelSheet.Cells(Row,1).Value=90   //此语句现在没起作用
       Row=Row+1
    Wend
       MsgBox (Row)
       ExcelSheet.Cells(Row,1).Value=90 //现在是因为这个语句,才把第一行设为90的
       ExcelWorkBook.Save
ExcelWorkBook.Close(True)
ExcelApp.Application.Quit
Set ExcelSheet=Nothing
Set ExcelWorkBook=Nothing
Set ExcelApp=Nothing
编译运行后发现只是第一行的值变成了90了,Row 每次也只是1.
烦请大家帮忙看看while那段语句是否有什么问题?因为好像while那几个句子没有运行。
多谢大家了!

[ 本帖最后由 topor 于 2009-7-31 10:30 编辑 ]

FLY000 发表于 2009-7-31 10:47:34

While ExcelSheet.Cells(Row,1).Value <> Null
      ExcelSheet.Cells(Row,1).Value=90   //此语句现在没起作用
   Row=Row+1
Wend

跟踪下,看有没有执行WHILE里面的语句?

topor 发表于 2009-7-31 11:06:06

原帖由 FLY000 于 2009-7-31 10:47 发表 http://bbs.51testing.com/images/common/back.gif
While ExcelSheet.Cells(Row,1).ValueNull
      ExcelSheet.Cells(Row,1).Value=90   //此语句现在没起作用
   Row=Row+1
Wend

跟踪下,看有没有执行WHILE里面的语句?

好像是没有执行到的
While ExcelSheet.Cells(Row,1).Value <> Null
      ExcelSheet.Cells(Row,1).Value=90   //此语句现在没起作用
      Row=Row+1
      msgbox (Row)            //以前加过这个语句,但是没有msgbox 出来,所以可以确定while里面的语句没有执行
Wend

为什么会这样呢?
是不是while 判断写的有问题呀?

[ 本帖最后由 topor 于 2009-7-31 11:07 编辑 ]

marco 发表于 2009-7-31 13:54:57

While ExcelSheet.Cells(Row,1).Value <> Null 这句替换成下面的就可以了
While ExcelSheet.Cells(Row,1).Value <> empty
null指变量非法,empty表示变量未初始化

还有可以用下面语句
While not isEmpty(ExcelSheet.Cells(Row,1).Value)

topor 发表于 2009-7-31 14:02:19

谢谢楼上的,按照你说的改就可以了,非常感谢! ^_^

dreamsea123 发表于 2009-7-31 14:26:15

ExcelSheet.Cells(Row,1)<>""这样也可以
页: [1]
查看完整版本: VBS用while/wend遍历excel的语句问题