在一个窗体模块中有许多事件过程都要用到for循环,在for循环中要用到变量i .所以我想到把i定义到窗体代码窗口中的“通用—声明”中(Private i As Integer)。却出现了错误(奇数行的颜色没填充完,只是有少部分单元格为指定的颜色)Private Sub VSF1_DblClick()
' Dim i As Integer   →→→→→→→如果把这条声明语句放在这里又可以了
 VSF2.Row = VSF2.Rows - 1
  If VSF2.Row Mod 2 = 0 Then
    For i = 1 To VSF2.Cols - 1
      VSF2.Col = i
      VSF2.CellBackColor = RGB(231, 255, 228)
    Next i
  End If
End Sub为什么把定义成局部变量又可以了呢?很想知道原因!

解决方案 »

  1.   

    不明白为什么但是我要说的是,局部变量不要改成全局变量,效率低、耗资源
    访问局部变量比全局变量快得多,而且局部变量生存期短,Sub执行完就释放掉了~
      

  2.   

    谢谢tztz520(午夜逛街) 和viena(维也纳nn-实心木头人)!^-^
    也没抱什么错啊,只是没达到想要的效果(就是VSF2中奇数行的颜色只有一部分单元格为指定颜色了,并不是从col=1以后的所有单元格为指定颜色),但把i定义成局部变量以后又是好好的了,感到很奇怪呀!呵呵~~~
      

  3.   

    Public i as integer
    用这个行不行?
      

  4.   

    你的判断条件不对的.只能附值一行.
    你用了VSF2.Row = VSF2.Rows - 1.所以你双击哪里都是选中最后一行的.就是只有总行数是奇数才会执行
      

  5.   

    呵呵,因为我的目的是双击后把VSF1的当前行拷贝到VSF2中,VSF2在没执行事件之前是空的,它的行数是执行了VSF1_DblClick后才增加的。 tztz520(午夜逛街),你明白我的用意哟!^-^刚仔细检查发现VSF2的行数在变化时调用了VSF2_Xiaoji事件,里面也用到了i,估计是受这里i的影响
    Private Sub VSF2_Xiaoji()
     Dim jsum As Long
     jsum = 0
     Label12.Caption = VSF2.Rows - 1
     For i = 1 To VSF2.Rows - 1
     jsum = jsum + Val(Mid(VSF2.TextMatrix(i, 3), 2)) * Val(VSF2.TextMatrix(i, 4))
     Next i
     Label14.Caption = "¥" & jsum
    End Sub
      

  6.   

    viena(维也纳nn-实心木头人) 
    说的很有道理。建议给他很高的分数
      

  7.   

    那个I在FOR循环还没结束的时候,其它地方改变了这个I就会出问题的.