整数:对于i = 0

时间:2014-03-15 15:03:37

标签: access-vba ms-access-2010

由于我是编程的初学者,并且非常努力地掌握一些对我来说并不总是那么清楚的关键概念,我想问一个理论类型的问题。下面的代码是MS Access 2010(由Groh)用户指南中的一个简单代码,在单击按钮(cmdWith)时,它会转换按钮(控件)和文本框(控件)的字体及其颜色。在大多数情况下,我理解代码的逻辑,但我无法理解整数部分..特别是我不理解这一行:

For i = 0 To Me.Controls.Count -1

-1对我来说非常奇怪..代码向后倒数吗?以下是完整的子程序..非常感谢。

Private Sub cmdWith_Click()
  Dim i As Integer
  Dim c As Control

  For i = 0 To Me.Controls.Count - 1
    Set c = Me(i)
    If TypeOf c Is CommandButton Then
      With c
        .FontName = "Arial"
        .FontBold = True
        .FontSize = 8
      End With
    ElseIf TypeOf c Is TextBox Then
      With c
        .FontName = "MS Sans Serif"
        .FontBold = False
        .FontSize = 8
        .ForeColor = 0 'Black
      End With
    End If
  Next
End Sub

2 个答案:

答案 0 :(得分:2)

For i = 0 To Me.Controls.Count - 1

注意原稿中的空格。它不是“负面的”,而是从数字Me.Controls.Count中减去1。循环从0开始,以低于Me.Controls.Count的1结束。因此,如果Me.Controls.Count为5,则循环将从0变为4。

答案 1 :(得分:1)

它正在向前发展。 -1只是从Me.Controls.Count中减去1 - 将分组视为For (i) = (0) To (Me.Controls.Count -1)。请注意,计数从0开始,而不是1,因此您需要- 1通过此For循环获得正确的传递次数。换句话说,从1计数到Me.Controls.Count的序列与从0到(Me.Controls.Count-1)的计数序列具有相同数量的元素

您会发现许多(但不是全部)语言从0开始计数而不是1,这样就可以进行数组索引; 0索引表示从阵列的开头偏移0位置"。这使得数组上的大量数学运算变得更加简单(IMO),因为必须记住从0到n-1而不是从1到n进行计数。