Excel VBA运行时错误“13”types不匹配错误

我想我的variables的定义有问题,但我不知道在哪里或为什么。 这是一个相当简单的代码来计算教师分配的教训的数量。 这些信息在工作表“Subects and Teachers 2018”中,必须打印在工作表“教师”中。 数量总是出现在名称的左侧。

这是代码。 如果有人能给我一个提示,说明我的定义不正确,我将非常感激! debugging表明,问题是在最后(不是代码的一部分)*****。

Sub Counter2018() Dim Var1 As String Dim CVar1 As Integer Dim i As Integer Dim j As Integer Dim k As Integer For k = 2 To 50 Var1 = Worksheets("Teachers").Cells(k, 3) CVar1 = 0 For i = 2 To 45 For j = 2 To 45 If Worksheets("2018 Subjects and Teachers").Cells(i, j) = Var1 Then CVar1 = CVar1 + Worksheets("2018 Subjects and Teachers").Cells(i, j - 1) ***** End If Next j Next i Worksheets("Teachers").Cells(k, 5) = CVar1 Next k End Sub 

试试这个版本(未经testing)


 Option Explicit Public Sub Counter2018() Dim wsTeachers As Worksheet, wsSubjects As Worksheet Set wsTeachers = Worksheets("Teachers") Set wsSubjects = Worksheets("2018 Subjects and Teachers") Dim teacher As String, counter As Long Dim i As Long, j As Long, k As Long For k = 2 To 50 teacher = wsTeachers.Cells(k, 3) counter = 0 For i = 2 To 45 For j = 2 To 45 If wsSubjects.Cells(i, j).Value2 = teacher Then If Not IsError(wsSubjects.Cells(i, j - 1)) Then counter = counter + Val(wsSubjects.Cells(i, j - 1).Value2) End If End If Next Next wsTeachers.Cells(k, 5) = counter Next End Sub 

我认为types不匹配错误是由wsSubjects.Cells(i, j - 1)一些单元造成的wsSubjects.Cells(i, j - 1)

该柜台期望在该列的数字,但可能有一些string或错误在那里