Vba 运行时错误13类型不匹配-在工作簿中选择工作表名称

Vba 运行时错误13类型不匹配-在工作簿中选择工作表名称,vba,excel,Vba,Excel,在工作簿中选择工作表名称时,出现了类型不匹配错误。所有图纸名称都已存储在字符串数组中。我在google和stackoverflow中搜索,但没有任何想法。这是代码的一部分 Dim Tran(5) As String Dim celltext As String For i = 1 To 5 celltxt = ActiveSheet.Range("K" & i).Text Tran(i) = celltext Next i Fo

在工作簿中选择工作表名称时,出现了类型不匹配错误。所有图纸名称都已存储在字符串数组中。我在google和stackoverflow中搜索,但没有任何想法。这是代码的一部分

Dim Tran(5) As String
    Dim celltext As String

    For i = 1 To 5
        celltxt = ActiveSheet.Range("K" & i).Text
        Tran(i) = celltext

    Next i
For i = 1 To 5


                wb4.Sheets(Tran(i)).Select 'problem line
                Set wb4sheet = wb4.Sheets(Tran(i))

                Set r = wb4sheet.UsedRange.Find("Payout Date")
                    j = wb4sheet.UsedRange.Row

                    Set rn = Range(r.Address, Cells(j, r.Column))
                Set b = wb4sheet.UsedRange.Find("Actual Paid in Principal")
                    Col1 = b.Column

您可以将ActiveSheet.RangeK&i.Text中的值指定给celltxt,但将其指定给Trani时,使用celltext。在模块开头使用Option Explicit可以解决打字错误。

请参见下面的“代码中的编辑”。我删除了celltext,因为不需要这样的中间字符串。您还声明数组错误。我让它从1开始,而不是0,然后运行到5,就像你的I一样

另外,对于exmaple j,使用不同的字母进行下一个for循环也是一种很好的做法

Dim Tran(1 to 5) As String
Dim i as integer
Dim k as integer


    For i = 1 To 5
        Tran(i) = ActiveSheet.Range("K" & i).Text       
    Next i

For k = 1 To 5
                wb4.Sheets(Tran(k)).Select 'problem line
                Set wb4sheet = wb4.Sheets(sName)

                Set r = wb4sheet.UsedRange.Find("Payout Date")
                    j = wb4sheet.UsedRange.Row

                    Set rn = Range(r.Address, Cells(j, r.Column))
                Set b = wb4sheet.UsedRange.Find("Actual Paid in Principal")
                    Col1 = b.Column
next k

即使在问题线上发生了同样的错误,我还是这样做了。你做了什么?请说得具体一点。你知道你可以通过按F8来调试你的代码,这样你就可以检查变量的值了吗?您应该检查Tran中的值。除了当前答案中提到的celltxt输入错误外,您的下一行将失败,因为sName尚未分配值。学会爱他所说的。如果您不知道或不确定如何正确缩进代码。