2009-07-15 5 views
2

配列2003の文字列からすべての引用文字を削除するサブルーチンをアクセス2003に書き込もうとしています。サブルーチンはルーチン自体で引用符を削除しますが、プログラムが渡し関数に戻るときには削除しません。私は非常に混乱している、ByRefされているように。配列byrefを渡しても元の配列は編集されません

Call removeQuotes(wbs_numbers()) 

とサブルーチン自体:それはどのように呼ばれて

'goes through a string array and removes quotes from each element in the array' 
Sub removeQuotes(ByRef string_array() As String) 
    For Each element In string_array() 
    'chr(34) is quotation character. visual basic does not have escape characters.' 
    element = Replace$(element, Chr(34), "") 
    Next 
End Sub 

誰かが私が間違っているのか説明していただけますか?私は永遠にあなたを愛しています!

+1

VBは「」「」同じようにうまく機能などのエスケープ文字を持っていますが、しません... –

+1

をあなたはあなたのすべてのモジュールの上にOPTION EXPLICITを持っていませんか?もしあなたがそうしたなら、あなたはどこにでも宣言されていないような要素のコンパイルエラーを得るべきです。 –

答えて

11

ご使用のアレイは参考になる可能性がありますが、elementはありません。インデックスを反復し、操作した後に文字列を配列に戻します。

+0

代入文で正確な配列インデックスを指定すると、すべてが完全に機能しました。ありがとうございました!!! – bluefear

+0

ようこそ。 –

+0

「受け入れ」はありませんか?どうして? – TheBlastOne

3

新しい変数「要素」を作成していて、string_arrayに戻して保存しないので、変更されません。

2

私のVBは少し錆びですが、迅速なGoogle検索は、このような何か上がっ:

Dim i As Integer 
For i = LBound(string_array) To UBound(string_array) 
    string_array(i) = Replace$(string_array(i), Chr(34), "") 
Next 
+0

明らかに、私はどこかで宣言する必要があります。通常は整数で十分です。 –

+0

ありがとう...それを修正しました。 –