由于我是编程的初学者,并且非常努力地掌握一些对我来说并不总是那么清楚的关键概念,我想问一个理论类型的问题。下面的代码是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
答案 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进行计数。