我是一名教师,我一直在为使用 Microsoft Word 的学生进行多项选择题测试。有没有办法让我自动改组问题,这样我就可以拥有多个版本的测试,而无需在测试周围复制和粘贴问题?在网上看,我发现了 Steve Yandl 发布的一个解决方案,他在将每个问题放在表格中的单独行后使用宏。我试图让他的宏工作,但它有错误。我对编码几乎一无所知,所以我被困住了。这是他的代码:
Sub ShuffleQuestions()
Dim Tmax As Integer
Dim strCell As String
Dim strQ As Variant
Dim strText As String
Dim I As Integer
Dim Z As Integer
Dim intQsLeft As Integer
Dim rndQ As Integer
Dim Q As Integer
Dim vArray As Variant
Dim strNew As String
Set objDict = CreateObject("Scripting.Dictionary")
Tmax = ThisDocument.Tables(1).Rows.Count
For I = 1 To Tmax
strCell = ThisDocument.Tables(1).Cell(I, 1).Range.Text
strQ = Left(strCell, Len(strCell) - 1)
objDict.Add strQ, strQ
Next I
ReDim arrQs(I - 1)
intQsLeft = I - 2
Z = 0
Do While intQsLeft = 0
Randomize
rndQ = Int((intQsLeft + 1) * Rnd)
intQsLeft = intQsLeft - 1
vArray = objDict.Items
strText = vArray(rndQ)
arrQs(Z) = strText
Z = Z + 1
objDict.Remove strText
Loop
For Q = 1 To Tmax
strNew = arrQs(Q - 1)
strNew = Left(strNew, Len(strNew) - 1)
ThisDocument.Tables(1).Cell(Q, 1).Range.Text = strNew
Next Q
End Sub
我收到的错误消息显示“运行时错误 5941 请求的集合成员不存在”当我选择“调试”按钮时,它会将我带到宏中显示“Tmax = ThisDocument.Tables(1 ).Rows.Count"
最终我只想重新排序问题,但如果还有一种方法可以重新排序每个问题的多项选择选项,我会很高兴。