Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
672to676
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
672to676
672to676
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array-Handling

Array-Handling
26.09.2005 10:32:38
zink
Hallo,
ich verstehe in folgendem Beispielcode nicht, warum das FeldA nach dem Durchlaufen der Prozedur "Umspeichern" gelöscht bzw. Empty ist.

Sub Test()
Dim FeldA(1 To 5) As Variant
Dim i As Integer
For i = 1 To 5: FeldA(i) = i: Next i     'Feld mit Zahlen belegen
Call Umspeichern(FeldA)
End Sub


Sub Umspeichern(ByRef aFeld As Variant)
Dim FeldB() As Variant
ReDim FeldB(1 To UBound(FeldA))
FeldB = aFeld       'Umspeichern
aFeld = FeldB       'Zurückspeichern
End Sub

Vor dem Aufruf der Pozedur Umspeichern ist das Feld ordnungsgemäß gefüllt. Setzt man innerhalb der Prozedur "Umspeichern" Haltepunkte, sieht man, dass die Zuweisung korrekt funktioniert. Nach dem Verlassen der Prozedur ist FeldA plötzlich "Empty", obwohl doch "ByRef" eingestellt ist.
Wo liegt der Fehler? Ich versteh das nicht.
Grüße
Joachim

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array-Handling
26.09.2005 10:37:00
Matthias
Hallo Joachim
wenn man ohne Option Explicit arbeitet...

ReDim FeldB(1 To UBound(FeldA))

muss heißen: aFeld
Gruß Matthias
AW: Array-Handling
26.09.2005 10:47:47
zink
Hallo Matthias, Danke für Deine Antwort.
Ich hab leider einen kleinen Schreibfehler produziert. Auch wenn ich, wie du richtig gesehen hast, das "FeldA" durch "aFeld" ersetze (ich arbeite mit Option explizit) tritt das Problem auf. Pobier's mal. War wie gesagt ein Schreibfehler meinerseits, ändert aber nichts an der Grundproblematik.
Also korrigiert:

Sub Test()
Dim FeldA(1 To 5) As Variant
Dim i As Integer
For i = 1 To 5: FeldA(i) = i: Next i     'Feld mit Zahlen belegen
Call Umspeichern(FeldA)
End Sub


Sub Umspeichern(ByRef aFeld As Variant)
Dim FeldB() As Variant
ReDim FeldB(1 To UBound(aFeld))
FeldB = aFeld       'Umspeichern
aFeld = FeldB       'Zurückspeichern
End Sub

Grüße
Joachim
Anzeige
AW: Array-Handling
26.09.2005 10:58:35
MichaV
Hallo Joachim,
es scheint daran zu liegen, daß das eine Array dynamisch und das andere statisch deklariert wird. So gehts:

Option Explicit
Sub Test()
Dim FeldA() As Variant
Dim i As Integer
ReDim FeldA(1 To 5)
For i = 1 To 5: FeldA(i) = i: Next i     'Feld mit Zahlen belegen
Call Umspeichern(FeldA)
Debug.Print "#", FeldA(2)
End Sub
Sub Umspeichern(aFeld As Variant)
Dim FeldB() As Variant
ReDim FeldB(1 To UBound(aFeld))
FeldB = aFeld       'Umspeichern
aFeld = FeldB       'Zurückspeichern
End Sub

Gruß- Micha
AW: Array-Handling
26.09.2005 11:08:46
zink
Hallo Micha,
ganz herzlichen Dank für Deine Hilfe und Erklärung.
Ich hätte es alleine nicht hingekriegt.
Grüße
Joachim
Anzeige
Danke für die Rückmeldung! owT
26.09.2005 17:37:55
MichaV

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige