私は、CSV文字列を検索し、それらが存在するはずのキャリッジリターンを追加するように設計されたVBAコードを持っています。私はそれを2つの別々の関数に分割しました。一つは文字列を検索し、CRを配列に入れるべきインデックスと実際にCRを追加するための第2の関数のインデックスを入れます。VBA関数が値を返さない
私が実行している問題は、関数のウォッチウィンドウ内の直接ウィンドウ/関数の値が関数内で正しいが、結果変数に空の文字列を割り当てることです。
私はちょうど好奇心が強い'*****************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
あなたのスペルをチェックします。オプションでaddCarraigeReturns –
電源を入れ対addCarriageReturns明示 –
はスペルがそれだった@GordonBell。ありがとう。 – BobtimusPrime