我有一个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高手,但我不明白为什么它不接受我的字符串。
1条答案
按热度按时间c2e8gylq1#
PeriodSheet
未声明,或声明为变量。您尚未将其声明为String
,否则将从For Each
行得到错误“For Each控制变量on arrays must be Variant”。因此,如果
PeriodSheet
* 需要 * 是一个变量,那么可以通过执行以下操作来避免调用函数时的类型不匹配错误:注意
PreviousPeriodSheet
应该声明为As String