我需要一些帮助来理解我们的老师试图传达的概念。这是一个开始的VBA访问课程,我们刚刚编写了我们的第一个简单项目。不幸的是,我不确定我是否没有掌握这个概念,因为他没有解释清楚,或者他是否解释得很差。我要求某人观看这个 4 分钟的视频,看看他们是否可以理解它,如果是这样,也许可以拿一个示例代码并进一步解释它。
http://www.ciselearn.com/240/240ReadCode/240ReadCode.html
我只是想了解他从哪里得到他在视频中引用的数字。
提供的问题之一的示例如下
Private Sub cmdQuestions5_Click()
Dim intEntry as Integer
intEndtry = 7
Select Case intEntry
Case 1
lblBox.Caption = 1 + intEntry
Case 2
lblBox.Caption = 2 + intEntry
Case 3
lblBox.Caption = 3 + intEntry
Case 4 to 8
If intEntry > 7 Then
lblBox.Caption = 8 + intEntry
ElseIf intEntry > 6 Then
lblBox.Caption = 7 + intEntry
Else
lblBox.Caption = 6 + intEntry
End If
Case Else
lblBox.Caption = 20
End Select
End Sub
它应该等于 14,但即使在观看视频后我也不知道这个数字是从哪里来的。任何帮助或进一步的解释将不胜感激。
警告 :当我开始时,这似乎更容易解释,而且我在完成它时一直在大声笑,但与其扔掉它,不如发布它。 这可能会让您更加困惑,或者可能不会。 每个人的学习方式都不同。 对不起,如果我让事情变得更糟!
重点:该视频与您发布的问题无关,也与谁不帮助您解决问题无关。
无论如何,我对视频的看法:
请注意,他将视频称为">我用来读取代码的方法"。每个人都有不同的学习方式(他知道这一点),尤其是在数学和逻辑方面(在我看来),在我看来,他承认这一点,所以不要太紧张。
我发现视频很难理解,我遇到问题的主要部分是指"循环"的数量(在他的第一列中)。
intH
从 1 数到 3。- 每次
intH
更改时,intQ
计数从 2 到 1。(步骤 -1 表示向后数 1。
在我的脑海中,我是这样想的:
- 第一个 FOR 语句运行:现在
intH
= 1。 所以这是循环#1 - 现在,下一个 FOR 语句从
intQ
= 2 开始运行。 所以这是循环#1-2 - 然后
intQ
减少 1。所以这是循环#1-1 - 现在
intH
将增加 1,所以这是循环#2
等等..
因此,按顺序,我将"循环位置"视为:
1
1-2
1-1
2
2-2
2-1
3
3-2
3-1
不确定这是否更有意义。很难用文字描述思维过程。
另一个循环中的循环称为嵌套循环。
这是我头顶的另一个嵌套循环...
- 我有5个孩子。(我实际上不认为那会很糟糕。
- 我将它们命名为
K1
到K5
。 - 每次我对一个孩子大喊大叫准备睡觉时,他们都需要刷牙并进入PJ。 刷
- 子由两部分组成:刷毛(部分#1)和刷牙(部分#2)
- PJ由两部分组成:上衣(衬衫)和下装(裤子)。
- 我的孩子很糟糕,不会一起做任何事情,除非我对他们大喊大叫,否则也不会做任何事情(所以我必须单独对他们每个人大喊大叫才能完成每项任务。
>
(开始程序"让孩子准备好睡觉")
(开始循环"孩子")
我对
K1
大喊:Kid=1
K1
准备睡觉!(开始子循环"画笔")
K1
刷!
K1
梳头!Brush=1
K1
刷牙!Brush=2
(结束子循环"画笔")
(开始子循环"PJ")
K1
进入你的PJ!
K1
进入你的PJ上衣!PJs=1
K1
进入你的PJ底裤!PJs=2
(结束子循环"PJ")
(K1 现在准备睡觉了。
下一个孩子...
我对
K2
大喊:Kid=2
K2
准备睡觉!(开始子循环"画笔")
K2
刷!
K2
梳头!Brush=1
K2
刷牙!Brush=2
(结束子循环"画笔")
(开始子循环"PJ")
K2
进入你的PJ!
K2
进入你的PJ上衣!PJs=1
K2
进入你的PJ底裤!PJs=2
(结束子循环"PJ")
(K2 现在可以睡觉了。
。等等。
那么,当所有5个孩子都准备好时,我喊了多少次?
这是循环:
Sub GetKidsReadyForBed()
Dim Kid As Integer, Brush As Integer, PJs As Integer
Debug.Print "(Time to get the kids ready for bed.)"
For Kid = 1 To 5
Debug.Print "(Prepare to yell at Kid #" & Kid & ")"
For Brush = 1 To 2
Debug.Print "YELL @ Kid #" & Kid & " Brush part #" & Brush & "!"
Next Brush
For PJs = 1 To 2
Debug.Print "YELL @ Kid #" & Kid & " Put on PJs part#" & PJs & "!"
Next PJs
Debug.Print "(Finished yelling at Kid #" & Kid & ")"
Next Kid
Debug.Print "(All Kids are finally ready for bed.)"
End Sub
每个孩子被喊了4次。 (画笔 * 2) + (睡衣 * 2)
我有5个孩子,所以喊叫次数: ( (画笔 * 2) + (PJ * 2) ) * 5
所以:
( 2 + 2 ) * 5
所以:
4 * 5 = 20 yells in total.
(如果您不知道 Debug.Print 的用途,请询问您的老师为什么还没有告诉您。 这是我理解代码如何工作的主要工具!
至于你发布的代码,你说你知道Select..Case
是如何工作的? 如果是这样,这应该很简单:
逐行单步执行代码:
intEndtry = 7
好的,
intEndtry
的值是 7。
Select Case intEntry
让我们根据
intEndtry
的值选择要运行的行
Case 1
intEndtry
= 1 吗? 不。 跳到下一个可能的情况。
Case 2
intEndtry
= 2 吗? 不。 跳到下一个可能的情况。
Case 3
intEndtry
= 3 吗? 不。 跳到下一个可能的情况。
Case 4 to 8
intEndtry
在 4 到 8 之间吗?是的! 不要跳过。
If intEntry > 7 Then
intEndtry
超过 7 个吗? 不。 跳到"其他"或"如果"。
ElseIf intEntry > 6 Then
intEndtry
超过 6 个吗?是的! 不要跳过。
lblBox.Caption = 7 + intEntry
Make lblBox.Caption = 7 + intEntry 所以,lblBox.Caption = 7 + 7
Else
此 ELSE 不适用,因为前面的 IF 语句条件匹配。 结束如果 案例其他
选择..案例陈述的 ELSE 不适用,因为我们已经有匹配项。
End Select
做。 所以我们做的最后一件事就是做
lblBox.Caption = 7 + 7
清澈如泥?:-)
我建议你把页面的副本带给老师,告诉他你至少尽力了...... 你应该为此获得奖励分数!
不要气馁,肯定有一个学习曲线。
祝你好运!