我需要帮助。我需要编写一个 VBA 代码,我需要将答题纸上的 ID 号与每个学生提交的内容进行匹配(单独打开每个学生提交的内容),完成后我需要对其进行评分并给出分数。如果 ID 匹配(学生与答题纸匹配),则可得一分,如果不匹配则无分,如果学生提交的内容中有重复的 ID,则只扣半分。
完成后,所有重复项都需要移至名为“复习记录表”的工作表,所有满分都移至成绩表。请提供任何帮助,因为这是我拥有的,并且无法运行
Dim i As Integer
Dim Grade As Double
Dim GradePoint As Long
Dim ID As Integer
Dim counter As Integer
Dim FinalGrade As Integer
'Find and Open Reviewed Records File
' user selected a file - do something
userSelectedFile = Application.GetOpenFilename
If userSelectedFile = False Then
MsgBox "No file Selected."
Else
' user selected a file - do something
MsgBox "File selected: " & userSelectedFile
Set wbNew = Workbooks.Open(userSelectedFile)
End If
'Find and Open Reviewed Records File
' user selected a file - do something
userSelectedFile = Application.GetOpenFilename
If userSelectedFile = False Then
MsgBox "No file Selected."
Else
' user selected a file - do something
MsgBox "File selected: " & userSelectedFile
Set wbNew = Workbooks.Open(userSelectedFile)
End If
For counter = 1 To 1000
FinalGrade = FinalGrade + 1
If counter > 0 Then
FinalGrade = FinalGrade + 0.5
Else
If counter <> 0 Then
FinalGrade = FinalGrade + 0
Else
If counter = 0 Then
FinalGrade = FinalGrade + 1
Else
End If
Do
For Each ID In Collection
If counter > 0 Then
FinalGrade = FinalGrade + 0.5
ID = ReviewedRecordsSheet
Else
If counter = 0 Then
FinalGrade = FinalGrade + 1
ID = GradeFileSheet
Loop Until ID = GradeFile
••••ˇˇˇˇ
答案1
我将您的代码复制到 Notepad++ 中以获取行号。
在模块开头使用 OPTION EXPLICIT。有很多变量没有使用 DIM 声明。这可能会导致错误。作为初学者,请不要在不使用 OPTION EXPLICIT 的情况下编写代码!
13 MsgBox "未选择文件。" '*** 缺少缩进!
17 Set wbNew = Workbooks.Open(userSelectedFile) '*** 您没有声明 setwbNEw
31 For counter = 1 To 1000 '*** 您应该缩进循环的内容,而不是循环本身。您在哪里终止循环?缺少哪个语句?!
32 FinalGrade = FinalGrade + 1 '缩进此行以及循环的其他内行
34-49 几行上的 IF 构造必须以 END IF 结尾。如有疑问,请从完整的外部 IF 构造开始,然后再添加内部 IF 构造
55 For Each ID In Collection '*** 缩进在哪里?
您缺少很多 END IF 语句!打印出您的代码并在属于 IF/END IF 结构的代码部分周围绘制方框。