In this PowerPoint Quiz Module, we will be designing our...

Read MoreIn this Interactive PowerPoint Quiz Game Module, we will be shuffling the order of the questions such that all the questions are shown to the students with no repetition. We achieve this by generating random orders and moving slides to a random position within a given range.

To generate the order of those multiple choice answer boxes, we rename those four boxes as “a1, a2, a3, a4”. And then, we make an array and shuffle that to get all the 16 combinations of “1,2,3,4”. Based on the order of the sequence, the answer boxes: “a1, a2, a3, a4” are arranged in slide-show mode.a

```
Sub RandomiseAnswerOrder()
Dim AnswerOrder() As Integer
ReDim AnswerOrder(3) '0 1 2 3 -> 4 compartments'
For i = 0 To 3
AnswerOrder(i) = i + 1
Next i
For i = 3 To 8
Randomize
For N = 0 To 3
J = Int(4 * Rnd) 'random number from 0 to 3
temp = AnswerOrder(N)
AnswerOrder(N) = AnswerOrder(J)
AnswerOrder(J) = temp
Next N
For j = 0 To 3
If AnswerOrder(j) = 1 Then
ActivePresentation.Slides(i).Shapes("a" & j+1).Top = 218
ActivePresentation.Slides(i).Shapes("a" & j+1).Left = 303
ElseIf AnswerOrder(j) = 2 Then
ActivePresentation.Slides(i).Shapes("a" & j+1).Top = 288
ActivePresentation.Slides(i).Shapes("a" & j+1).Left = 303
ElseIf AnswerOrder(j) = 3 Then
ActivePresentation.Slides(i).Shapes("a" & j+1).Top = 363
ActivePresentation.Slides(i).Shapes("a" & j+1).Left = 303
ElseIf AnswerOrder(j) = 4 Then
ActivePresentation.Slides(i).Shapes("a" & j+1).Top = 432
ActivePresentation.Slides(i).Shapes("a" & j+1).Left = 303
End If
Next j
Next i
End Sub
```

**I put the codes used to randomize the array inside the For i = 3 To 8 Loop:** Or else, the answer boxes were shuffled in the same manner across all the slides.

If the order of the answers were: a3, a2, a1 and a4 in your first slide, it would been the same order for all the other questions slides too.

However, by randomizing the array every time for a new slide, we are able to shuffle the answer order in a new different order.

```
Sub ShuffleSlides()
FirstSlide = 3
LastSlide = 8
Randomize
'generate random number between 2 to 7'
RSN = Int((LastSlide - FirstSlide + 1) * Rnd + FirstSlide)
For i = FirstSlide To LastSlide
ActivePresentation.Slides(i).MoveTo (RSN)
Next i
End Sub
```

We can change the name of the shape in Microsoft PowerPoint by using the following VBA Macro:

```
Sub ChangeNameOfShape()
For i = 3 To 8
ActivePresentation.Slides(i).Shapes("Rect 5").Name = "a1"
Next i
End Sub
```

We can find the position of the answer shape by printing the co-ordinates of the shape in our Immediate Window. Toggle that by pressing Ctrl + G in your Visual Basic Applications Window

```
Sub FindPositionOFAnswers()
Debug.Print ActivePresentation.Slides(3).Shapes("a1").Top
Debug.Print ActivePresentation.Slides(3).Shapes("a2").Top
Debug.Print ActivePresentation.Slides(3).Shapes("a3").Top
Debug.Print ActivePresentation.Slides(3).Shapes("a4").Top
End Sub
```

Arrays can store multiple values in different compartments. The following is an example of the array which we used to randomise the answer order by shuffling the sequence of “1,2,3,4”.

We generate a random compartment number from 0 to 3 and take the value of that compartment and place it in compartment 0. We generate another random compartment number and take its value and place it in compartment 1. Similarly, we do these via a For-Loop:

`For N = 0 To 3 `

We transfer the values from one compartment to another by storing the value in a temporary variable called **temp**

```
temp = AnswerOrder(N)
AnswerOrder(N) = AnswerOrder(J)
AnswerOrder(J) = temp
```

In my above code where I assign the position,** i = 3 To 8 **refers to slides that contain questions. A loop is made for every value of i, which is: 3, 4, 5, 6, 7, 8.

**j = 0 To 3** refers to the compartment numbers (the correct terminology is indexing) of the array. The *compartment 0 *corresponds to the shape **a1**, *compartment 1* corresponds to the shape **a2**… and so on!

Thus, we refer to the shape as **“a” & j + 1** since a very visible relation is possible:

If j = 0, shape = __“a” & j + 1__ = __“a” & 0 + 1__ = __“a1”__ and so on…

Thus, our PowerPoint VBA Macro Code to shuffle the answer orders becomes much more neat. You can also use the similar trick of shuffling an array to randomly shuffle the question slides without literally causing the slides to change their position.

In this PowerPoint Quiz Module, we will be designing our...

Read MoreIn this PowerPoint Quiz Game, we will calculate the number...

Read MoreWe will be shuffling the order of the questions such...

Read MoreWe will be exporting/sending the results of the PowerPoint Quiz...

Read More