2009-07-15 12 views
2

Ich versuche, eine Subroutine in Access 2003 zu schreiben, die alle Anführungszeichen aus Strings in einem Array entfernt. Die Subroutine entfernt die Anführungszeichen erfolgreich in der Routine selbst, aber nicht, wenn das Programm zur Übergabefunktion zurückkehrt. Ich bin sehr verwirrt, wie es ByRef getan wird.Das Übergeben von Array byref bearbeitet das ursprüngliche Array nicht

Wie es heißt:

Call removeQuotes(wbs_numbers()) 

und das Unterprogramm selbst:

'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 

Kann jemand bitte erklären, was ich falsch mache? Ich würde dich für immer lieben!

+1

VB kein Escape-Zeichen als solche, aber „“ „“ funktioniert genauso gut ... –

+1

Haben Sie OPTION EXPLICIT nicht oben in allen Ihren Modulen? Wenn Sie dies getan haben, sollten Sie einen Kompilierungsfehler für ein Element erhalten, das anscheinend nirgends deklariert wird. –

Antwort

11

Ihr Array ist möglicherweise per Referenz, aber element ist nicht. Iterieren Sie nach Index und setzen Sie den String wieder in das Array, nachdem Sie ihn manipuliert haben.

+0

Sobald ich den genauen Array-Index in der Zuweisungsanweisung angegeben hat, hat alles perfekt funktioniert. Vielen Dank!!! – bluefear

+0

Gern geschehen. –

+0

Nein "akzeptieren"? Warum? – TheBlastOne

3

Sie erstellen eine neue Variable "element" und speichern sie nicht zurück in string_array, so dass sie sich nicht ändert.

2

Mein VB ist ein wenig rostig, aber eine schnelle Google-Suche tauchte so etwas wie dies oben:

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

Offensichtlich muss ich irgendwo erklärt werden. Integer ist normalerweise ausreichend. –

+0

Danke ... repariert es. –

Verwandte Themen