用随机数执行计算

Nic*_*cpr 7 random vba powerpoint-vba

我正在尝试制作一个数学练习powerpoint,其中学生将使用数字1 - 20来呈现随机添加问题.我一直在使用David Marcovtiz(和其他人)的教程,并使用他的代码作为起点.由于我的观众是年轻学生,我希望数学问题不是在消息框中,而是在文本框或形状之类的东西,我可以自定义,并为年轻学生提供大的视觉吸引力.

所以,我想要做的......在一个powerpoint节目中

  1. 学生可以点击"开始"按钮,将其带到下一张幻灯片
  2. 下一张幻灯片会自动生成2个学生必须一起添加的随机数.
  3. 学生输入答案
  4. 如果答案是正确的 - 我想要一些东西来表示答案是正确的,但不是他们必须点击关闭的东西.理想情况下,一个小星星在角落闪烁然后消失
  5. 如果答案不正确,则消息或图片会闪烁然后消失.

  6. 自动/随机生成新的添加问题我想将添加问题的数量设置为例如20,然后将幻灯片移动到评分幻灯片,该幻灯片显示他们在图片中的分数,例如每个正确答案的星号.

更新:使用Activex文本框:

我已经成功使用activex文本框,能够随机显示两个数字并将它们相乘并在第三个activex文本框中显示答案,我将其隐藏在幻灯片中.我使用第四个作为输入框,让学生输入他们的答案.如果这与第三个框中的答案相同,我可以显示一个星形并清除框然后移动到下一张幻灯片.如果它不一样,我可以去显示另一张图片,然后转到下一张幻灯片.(我原本希望幻灯片更新并使用一张幻灯片提出20个问题,但发现这很困难.)

目前,这需要单击三个命令按钮.

到目前为止我所管理的内容(我知道这对你来说似乎很难过,可能不稳定,但对我来说是一项重大成就,并且'比特'正在运作)我可以管理它用于乘法但是当我+值时,例如9 + 3 ,我得到93

Private Sub CommandButton1_Click()
    TextBox1.Value = Int(10 * Rnd)
    TextBox2.Value = Int(10 * Rnd)
    TextBox3.Value = TextBox1.Value * TextBox2.Value
End Sub

Private Sub CommandButton2_Click()
    If TextBox4.Value = TextBox3.Value Then
        ActivePresentation.Slides("problem").Shapes("badge5").Visible = True
        ActivePresentation.Slides("score").Shapes("badge5").Visible = True
    Else 
        ActivePresentation.Slides("problem" _).Shapes("incorrect").Visible = True

        TextBox1.Value = ""
        TextBox2.Value = ""
        TextBox3.Value = ""
        TextBox4.Value = ""
    End If
End Sub

Private Sub CommandButton3_Click()
    SlideShowWindows(1).View.Next
End Sub
Run Code Online (Sandbox Code Playgroud)

我需要的

我希望命令按钮1中的随机数自动激活.

我想结合命令按钮2和3,并在星形或不正确的形状出现之后包括等待时间,然后移动到下一张幻灯片,但我找到的代码将等待时间应用于整个序列,因为我不知道如何包括它.

Private Sub Time_Click()
    iTime = 2#
    Start = Timer

    While Timer < Start + iTime
    Wend

    With SlideShowWindows(1).View.Next
    End With  
End Sub
Run Code Online (Sandbox Code Playgroud)

使用形状: 我更喜欢使用普通的文本框或形状但是...我已经设法在形状中生成随机数但是无法将它们相乘并让学生输入一个activex文本框来确定它是否是还是错的.我认为问题在于尝试使用两种形状和一个activex文本框.

我想使用形状,因为我想创建可以使用以下代码选择的主幻灯片布局 - 虽然这不是一个交易破坏者.

Sub background()
    ActivePresentation.Slides.Range(Array(2, 3, 4, 5)).CustomLayout_ 
    = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(6)
End Sub
Run Code Online (Sandbox Code Playgroud)

我觉得这是其他教育工作者可以使用的东西,如果有人愿意并且能够协助编码,我很乐意发布完成的节目.我真的很感激贡献者的宽容和耐心,这些对于像我这样的人来说,他们先跳了起来,兴奋不已,但却挣扎着.

Dav*_*ers 1

因此,为了分解您在“我需要什么”部分中请求的部分,我将把我的答案分为两部分:

“我希望命令按钮 1 中的随机数字能够自动激活。”

我假设您所说的“自动”的意思是您希望在用户回答上一张幻灯片上的问题后,自动用值填充“下一张”幻灯片。为了实现此功能,我将在运行 CommandButton2 中的所有逻辑后调用 CommandButton1 当前调用的方法。

“我想结合命令按钮 2 和 3,并在出现星星或不正确的形状后,在移动到下一张幻灯片之前添加等待时间......”

我只需将两个函数的代码与两个代码之间的等待函数组合起来。我不确定您在哪里找到了为“Timer_Click”功能发布的代码,我认为这不会像当前发布的那样工作。我通常会使用这个答案中提到的“等待”方法。

根据两个新需求更改代码后,结果将如下所示:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Sub CommandButton2_Click()
    'Command Button 2(code)
    If TextBox4.value = TextBox3.value Then
        ActivePresentation.slides("problem").Shapes("badge5").visible = True
        ActivePresentation.slides("score").Shapes("badge5").visible = True
    Else
        ActivePresentation.slides("problem").Shapes("incorrect").visible = True

        TextBox1.value = ""
        TextBox2.value = ""
        TextBox3.value = ""
        TextBox4.value = ""
    End If

    'Wait code here(1000ms)
    Sleep 1000

    'Command Button 3(code)
    SlideShowWindows(1).View.Next

    'Call the command for CommandButton1, 
    'this will "automatically" populate the slide with new values
    CommandButton1_Click
End Sub
Run Code Online (Sandbox Code Playgroud)