
Dalam Modul Game Kuis PowerPoint Interaktif ini, kami akan mengacak urutan pertanyaan sehingga semua pertanyaan ditampilkan kepada siswa tanpa pengulangan. Kami mencapai ini dengan menghasilkan pesanan acak dan memindahkan slide ke posisi acak dalam rentang tertentu.
Untuk menghasilkan urutan dari kotak-kotak jawaban pilihan ganda itu, kami mengganti nama empat kotak itu menjadi “a1, a2, a3, a4”. Dan kemudian, kita membuat array dan mengocoknya untuk mendapatkan semua 16 kombinasi “1,2,3,4”. Berdasarkan urutan urutan, kotak jawaban: “a1, a2, a3, a4” disusun dalam mode peragaan slide.
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
Saya meletakkan kode yang digunakan untuk mengacak array di dalam lingkaran For i = 3 To 8: Atau, kotak-kotak jawaban dikocok dengan cara yang sama di semua slide.
Jika urutan jawabannya adalah: a3, a2, a1 dan a4 di slide pertama Anda, itu akan menjadi urutan yang sama untuk semua slide pertanyaan lainnya juga.
Namun, dengan mengacak array setiap kali untuk slide baru, kami dapat mengacak urutan jawaban dalam urutan berbeda yang baru.
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
Pelajari lebih lanjut tentang pengocokan slide secara acak
Kami dapat mengubah nama bentuk di Microsoft PowerPoint dengan menggunakan VBA Macro berikut:
Sub ChangeNameOfShape()
For i = 3 To 8
ActivePresentation.Slides(i).Shapes("Rect 5").Name = "a1"
Next i
End Sub
Kita dapat menemukan posisi bentuk jawaban dengan mencetak koordinat bentuk di Jendela Langsung kami. Alihkan itu dengan menekan Ctrl + G di Jendela Aplikasi Visual Basic Anda
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
Mengacak urutan 1,2,3,4 dengan mengocok Array dalam Perintah Acak
Array dapat menyimpan beberapa nilai dalam kompartemen yang berbeda. Berikut ini adalah contoh array yang kami gunakan untuk mengacak urutan jawaban dengan mengacak urutan “1,2,3,4”.

Kami menghasilkan nomor kompartemen acak dari 0 hingga 3 dan mengambil nilai kompartemen itu dan menempatkannya di kompartemen 0. Kami menghasilkan nomor kompartemen acak lain dan mengambil nilainya serta menempatkannya di kompartemen 1. Demikian pula, kami melakukan ini melalui Loop:
For N = 0 To 3
Kami mentransfer nilai dari satu kompartemen ke yang lain dengan menyimpan nilai dalam variabel sementara yang disebut temp
temp = AnswerOrder(N)
AnswerOrder(N) = AnswerOrder(J)
AnswerOrder(J) = temp
Menambahkan For-Loops untuk menetapkan posisi baru untuk bentuk jawaban
Dalam kode saya di atas di mana saya menetapkan posisi, i = 3 hingga 8 mengacu pada slide yang berisi pertanyaan. Sebuah loop dibuat untuk setiap nilai i, yaitu: 3, 4, 5, 6, 7, 8.
j = 0 To 3 mengacu pada angka kompartemen (terminologi yang benar adalah pengindeksan) dari array. The kompartemen 0 berkorespondensi dengan bentuk a1 , kompartemen 1 berkorespondensi dengan bentuk a2 … dan seterusnya!
Jadi, kita merujuk pada bentuk sebagai “a” & j + 1 karena hubungan yang sangat mungkin terlihat:
Jika j = 0, bentuk = “a” & j + 1 = “a” & 0 + 1 = “a1” dan seterusnya…
Dengan demikian, Kode Makro PowerPoint VBA kami untuk mengocok perintah jawaban menjadi jauh lebih rapi. Anda juga dapat menggunakan trik serupa mengocok array untuk secara acak mengocok slide pertanyaan tanpa secara harfiah menyebabkan slide mengubah posisi mereka.