我需要一些帮助,试图掌握我们的老师试图了解的概念。这是一个开始的VBA Access课程,我们刚刚编写了我们的第一个简单项目。不幸的是,我不确定我是不是在理解这个概念,因为他没有清楚地解释,或者他是否做了一个糟糕的工作解释。我要求有人观看这个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但我不知道这个数字来自哪里,甚至在跟随视频之后。任何帮助或进一步的解释将不胜感激。
答案 0 :(得分:2)
警告 :这在我开始时似乎更容易解释,而且我在完成工作时一直很乐意,但相反扔掉它我不如发布它。这可能会让你更加困惑,也可能不会。每个人都学得不同。对不起,如果我让事情变得更糟!
重点: 该视频与您发布的问题无关,并且无法帮助您解决此问题。
我对视频的看法无论如何:
请注意,他调用视频"方法我使用读取代码" 。每个人都学习不同的方式(而且他知道),特别是在数学和数学方面。逻辑(在我看来),在我看来,他承认这一点,所以不要过分强调。
我发现该视频难以理解,而我遇到的主要问题是指" Loops" (在他的第一栏)。
intH
从1到3计算。intH
更改时,intQ
从2到1计算。(步骤-1表示向后计数1') 在我脑海中,我想是这样的:
intH
= 1.所以这是Loop #1 intQ
= 2开始运行。所以这是循环#1-2 intQ
减少1.所以这是Loop #1-1 intH
会增加1,所以这就是Loop #2 依旧......
所以按顺序,我会想到"循环位置"为:
1
1-2
1-1
2
2-2
2-1
3
3-2
3-1
不确定这是否更有意义。 很难用文字描述思考过程。: - )
另一个循环内的循环称为嵌套循环。
K1
命名为K5
。>
(开始程序 "让孩子准备好睡觉" )
(开始循环' Kid')
我对
K1
大喊:Kid=1
K1
准备睡觉了!(开始子循环'刷')
K1
刷!
K1
刷头发! <子>Brush=1
子>
K1
刷牙! <子>Brush=2
子>(结束子循环&#39;刷&#39;)
(开始子循环&#39; PJs&#39;)
K1
进入你的PJ!
K1
进入你的PJ Top! <子>PJs=1
子>
K1
进入你的PJ下装! <子>PJs=2
子>(结束子循环&#39; PJs&#39;)
(K1现在可以睡觉了。)
NEXT KID ......
我对
K2
大喊:Kid=2
K2
准备睡觉了!(开始子循环&#39;刷&#39;)
K2
刷!
K2
刷头发! <子>Brush=1
子>
K2
刷牙! <子>Brush=2
子>(结束子循环&#39;刷&#39;)
(开始子循环&#39; PJs&#39;)
K2
进入你的PJ!
K2
进入你的PJ Top! <子>PJs=1
子>
K2
进入你的PJ下装! <子>PJs=2
子>(结束子循环&#39; PJs&#39;)
(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)+(PJs * 2)
我有5个孩子,所以大喊大叫: ((Brush * 2)+(PJs * 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
由于之前的IF语句标准匹配,因此ELSE不适用。 万一 Case ElseSelect..Case语句的ELSE不适用,因为我们已经有匹配。
End Select
完成。所以我们做的最后一件事是make
lblBox.Caption = 7 + 7
清除泥土? : - )
我建议你把一页的副本带给老师,告诉他你至少已经尽了最大努力......你应该得到奖励分数!
不要气馁,这肯定是一个学习曲线。祝你好运!