I have a String()
array, which I am looping through using For Each
. Inside of this loop, I am running a function that takes the String as an argument. I keep getting ByRef argument type mismatch when calling the function, and I'm not sure why. I can confirm that the variables used are strings:
though one of them is an empty string, that shouldn't matter. Any ideas?
PeriodArray = f.getPerArray
PreviousPeriodSheet = ""
For Each PeriodSheet In PeriodArray
Debug.Print PeriodSheet & " " & TypeName(PeriodSheet) & " | " _
& PreviousPeriodSheet & " " & TypeName(PreviousPeriodSheet)
Call RenderPeriod(PeriodSheet, PreviousPeriodSheet)
PreviousPeriodSheet = PeriodSheet
Next
Here's the parameters for the RenderPeriod
function
Function RenderPeriod(PeriodName As String, PrevPeriodName As String)
And here's the f.getPerArray function, which is where the String() array comes from:
Function getPerArray() As String()
I'm no VBA wiz, but I don't see why it's not accepting my Strings.
CodePudding user response:
PeriodSheet
is either undeclared, or declared as a Variant. You haven't declared it as String
or you'd be getting the error "For Each control variable on arrays must be Variant" from the For Each
line.
So if PeriodSheet
needs to be a Variant you can avoid the type mismatch error when calling the function by doing something like this:
RenderPeriod CStr(PeriodName), PreviousPeriodSheet
Note PreviousPeriodSheet
should be declared As String