2017-07-26 32 views
0

私は、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

+1

あなたのスペルをチェックします。オプションでaddCarraigeReturns –

+1

電源を入れ対addCarriageReturns明示 –

+0

はスペルがそれだった@GordonBell。ありがとう。 – BobtimusPrime

答えて

1

、なぜあなたは、このような個別の機能をしたいですか?

あなただけ使用することができます:

line = Replace(line, "SALE", "SALE" & Chr(13)) 
+0

明らかに私はマゾヒストであり、より困難なことをします。 :)置換は文字列の残りの部分には破壊的ではなく、指定した部分にのみ影響することを忘れていました。 – BobtimusPrime

+0

心配しないで、私たちすべてに起こります。 :) –