Ich habe einen VBA-Code, der eine CSV-Zeichenfolge suchen und Carriage Returns hinzufügen soll, wo sie vorhanden sein sollten. Ich habe es in zwei separate Funktionen aufgeteilt - eine, um die Zeichenfolge zu suchen und den Index zu setzen, wo die CRs in ein Array gehen sollen, und eine zweite Funktion, um die CRs tatsächlich hinzuzufügen.VBA-Funktion gibt keinen Wert zurück
Das Problem, das ich renne, ist, dass der Wert im unmittelbaren Fenster/im Überwachungsfenster für die Funktionen innerhalb der Funktion selbst korrekt ist, aber er weist der Ergebnisvariablen eine leere Zeichenfolge zu.
'*****************Import CSV**********************
'Took this straight off the internet because it was reading Jet.com files as one single line
'
Sub ImportCSVFile(filepath As String)
.....
line = SearchString(line, "SALE")
.....
End Sub
'****************Search String***************************
'This is search the string for something - It will then call a function to insert carriage returns
Function SearchString(source As String, target As String) As String
Dim i As Integer
Dim k As Integer
Dim myArray() As Variant
Dim resultString As String
Do
i = i + 1
If Mid(source, i, Len(target)) = target Then
ReDim Preserve myArray(k)
myArray(k) = i
k = k + 1
End If
DoEvents
Loop Until i = Len(source)
resultString = addCarriageReturns(source, myArray) 'resultString here is assigned a blank string
SearchString = resultString
End Function
'***************Add Carraige Returns**************************
'Cycle through the indices held in the array and place carriage returns into the string
Function addCarriageReturns(source As String, myArray As Variant) As String
Dim i As Integer
Dim resultString As String
resultString = source
For i = 0 To UBound(myArray, 1)
resultString = Left(resultString, myArray(i) + i) & Chr(13) & Right(resultString, Len(resultString) - myArray(i) + i)
Next i
addCarraigeReturns = resultString 'The value of addCarriageReturn is correct in the immediate window here
End Function
In the function the value is not blank ...but when it passes it back, it says the value is blank
Prüfen Sie die Rechtschreibung: addCarriageReturns vs addCarraigeReturns –
Schalten Sie Option Explicit –
@GordonBell die Schreibweise es war. Vielen Dank. – BobtimusPrime