excel VBA ByRef参数类型不匹配,即使类型匹配?

kdfy810k  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(243)

我有一个String()数组,我使用For Each循环。在这个循环中,我运行了一个将String作为参数的函数。在调用函数时,我一直得到ByRef参数类型不匹配的问题,我不知道为什么。我可以确认使用的变量是字符串:

虽然其中一个是空字符串,但这没关系,有什么想法吗

PeriodArray = f.getPerArray
PreviousPeriodSheet = ""
For Each PeriodSheet In PeriodArray
    Debug.Print PeriodSheet & " " & TypeName(PeriodSheet) & " | " _
              & PreviousPeriodSheet & " " & TypeName(PreviousPeriodSheet)
    
    Call RenderPeriod(PeriodSheet, PreviousPeriodSheet)
    PreviousPeriodSheet = PeriodSheet
Next

以下是RenderPeriod函数的参数

Function RenderPeriod(PeriodName As String, PrevPeriodName As String)

下面是f.getPerArray函数,它是String()数组的来源:

Function getPerArray() As String()

我不是VBA高手,但我不明白为什么它不接受我的字符串。

c2e8gylq

c2e8gylq1#

PeriodSheet未声明,或声明为变量。您尚未将其声明为String,否则将从For Each行得到错误“For Each控制变量on arrays must be Variant”。
因此,如果PeriodSheet * 需要 * 是一个变量,那么可以通过执行以下操作来避免调用函数时的类型不匹配错误:

RenderPeriod CStr(PeriodName), PreviousPeriodSheet

注意PreviousPeriodSheet应该声明为As String

相关问题