家庭作业帮助 - 阅读代码和计算整数

时间:2017-12-02 07:17:18

标签: excel vba integer

我需要一些帮助,试图掌握我们的老师试图了解的概念。这是一个开始的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但我不知道这个数字来自哪里,甚至在跟随视频之后。任何帮助或进一步的解释将不胜感激。

1 个答案:

答案 0 :(得分:2)

警告 :这在我开始时似乎更容易解释,而且我在完成工作时一直很乐意,但相反扔掉它我不如发布它。这可能会让你更加困惑,也可能不会。每个人都学得不同。对不起,如果我让事情变得更糟!

重点: 该视频与您发布的问题无关,并且无法帮助您解决此问题。

我对视频的看法无论如何:

请注意,他调用视频"方法使用读取代码" 。每个人都学习不同的方式(而且他知道),特别是在数学和数学方面。逻辑(在我看来),在我看来,他承认这一点,所以不要过分强调。

我发现该视频难以理解,而我遇到的主要问题是指" Loops" (在他的第一栏)。

  • intH从1到3计算。
  • 每次intH更改时,intQ从2到1计算。(步骤-1表示向后计数1')

在我脑海中,我想是这样的:

  • 第一个FOR语句运行:now intH = 1.所以这是Loop #1
  • 现在下一个FOR语句从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

不确定这是否更有意义。 很难用文字描述思考过程。: - )

另一个循环内的循环称为嵌套循环。

这是我头顶的另一个嵌套循环...

  • 我有 5 小孩。 (我实际上并不感觉太糟糕了。)
  • 我将K1命名为K5
  • 每当我对一个孩子大吼大叫准备睡觉时,他们都需要进入PJ
  • 画笔由两部分组成:刷头发(部件号1)和刷牙(部件号2)
  • PJ' 由2部分组成:顶部(衬衫)和底部(裤子)。
  • 我的孩子们可怕并且什么都不做,除非我对他们大喊大叫,否则他们什么都不做(所以我必须对他们每个人大喊大叫完成每项任务。)

>

  

开始程序 "让孩子准备好睡觉"

     

(开始循环' 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 Else

     

Select..Case语句的ELSE不适用,因为我们已经有匹配。

End Select
  

完成。所以我们做的最后一件事是make lblBox.Caption = 7 + 7

清除泥土? : - )

我建议你把一页的副本带给老师,告诉他你至少已经尽了最大努力......你应该得到奖励分数!

不要气馁,这肯定是一个学习曲线。

祝你好运!