Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
168to172
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
168to172
168to172
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

einzelne Arrayfelder löschen

einzelne Arrayfelder löschen
14.10.2002 13:01:41
Daniel
Hallo Leute

ich habe folgendes Problem. Ich habe ein Array das, sagen wir mal 27 variablen hat. Es ist aber nur jede dritte Variable definiert. jetzt möchte ich diese "vollen" Variablen auslesen respektive in ein neues Array, das dann exakt die grösse hat der anzahl vollen Variablen des alten arrays. Am schluss möchte ich sie dann auch noch in Zellen(Excel)ausgeben.
Vielen dank schon im voraus für eure Hilfe.
Gruss Daniel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: einzelne Arrayfelder löschen
14.10.2002 13:54:25
Steph@n
Hi,

Du läufst mit ner Schleife über das bestehende Array und Fragst dabei den Inhalt des jeweiligen Array-Feldes ab. Sobald er ein gefülltes Feld findet setzt Du einen Zähler hoch redimensionierst das neue Array aufgrund dieses Zählers und weist diesem neuen FArray-Feld den entsprechenden Wert des alten Arrays zu!

Bsp.:
Redim arrNeu(1 to intZähler)
arrNeu(intZähler) = varWert

Wenn Du dieses Beispiel nutzt, weist Du vorher den Inhalt des alten Arrays der Variablen varWert zu!

Ich hoffe Du kannst mit dem Ansatz was anfangen!

Gruss Stephan

Re: einzelne Arrayfelder löschen
14.10.2002 14:17:12
Daniel
Hallo Stephan

Ja leider komme ich da nicht so draus. Mein fragezeichen ist noch, wie finde ich raus das etwas drin steht. Denn es ist eben zeichen und keine Nummern.
Vielen dank aber für denn ersten ansatz.
Gruss Daniel

Anzeige
Re: einzelne Arrayfelder löschen
15.10.2002 08:37:49
Steph@n
Hi,

ein Ansatz für ein eindimensionales Array wäre:

Sub ArrayAuslesen()

Dim lgUntergrenze as Long, lgObergrenze as Long, lgZähler as Long
Dim arrAlt() as Variant, arrNeu() as Variant, varWert as Variant

lgUntergrenze = LBound(arrAlt(1))
lgObergrenze = UBound(arrAlt(1))

For lgZähler = lgUntergrenze to lgObergrenze
If arrAlt(lgZähler) <> "" then
varWert = arrAlt(lgZähler)
Redim arrNeu(1 to lgZähler)
arrNeu(lgZähler) = varWert
Endif
Next lgZähler

End Sub


Teste das mal, ob das so klappt! (Kann sein, dass Du LBound und UBond vertauschen musst. Habe kein Excel zum testen hier!)

Gruss Stephan

Anzeige
Re: einzelne Arrayfelder löschen
16.10.2002 08:00:04
Daniel
Hallo Stephan

Leider geht diesen code nicht. Die arbeitsweise verstehe ich, aber beim mir sagt er dann da die Typen nicht verträglich sind. Und zwar wenn ich Redim arrNeu (1 to IgZähler) schreibe. Sobald ich die Variable IgZähler durch eine Zahl ersetze geht es anstandslos. Ich habe mir schon den Kopf zerbrochen warum das nicht so geht wie du mir geschrieben hast. Vielleicht hast du noch eine Idee oder Lösung. Vielen danka aber noch für die Ideen.
Gruss Daniel

Re: einzelne Arrayfelder löschen
16.10.2002 09:36:37
Steph@n
Hallo,

es hatte sich leider der Fehlerteufel eingeschlichen. Habe den Code nochmal überarbeitet. Dieser kann jedoch nur funktionieren, wenn Dein altes Array ein EINDIMENSIONALES Array ist. Falls nicht kannst Du den Code in dieser Form nicht anwenden. Er müsste dann überarbeitet werden!

Probiers nochmal. Falls es wieder nicht funzt, sag nochmal bescheid, dann muss ich mir irgendwo einen Excel-Arbeitsplatz suchen und es direkt testen!

Hier der überarbeitete Code:

Sub ArrayAuslesen()

Dim lgUntergrenze as Long, lgObergrenze as Long, lgZähler as Long
Dim arrAlt() as Variant, arrNeu() as Variant, varWert as Variant

lgUntergrenze = LBound(arrAlt,1)
lgObergrenze = UBound(arrAlt,1)

For lgZähler = lgUntergrenze to lgObergrenze
If arrAlt(lgZähler) <> "" then
varWert = arrAlt(lgZähler)
Redim Preserve arrNeu(1 to lgZähler)
arrNeu(lgZähler) = varWert
Endif
Next lgZähler

End Sub


Gruss Stephan


Anzeige
Re: einzelne Arrayfelder löschen
16.10.2002 14:48:32
Daniel
hallo

Vielen dank für die anregung. Der Code war eigentlich korrekt von dir. Ich wollte dann das neue Array in andere zellen zurück geben. Zwar war das neue Array nicht gleich gross, es hatte aber dennoch "freie" Arrayfelder drin. Das kommt daher weil er IgZähler auch dann hochzählt wenn er eben nicht in die then anweisung kommt.

Ich habe dann das ganze so gelöst.
For IgZähler 1 to 100
If arrAlt(lgZähler) <> "" then
l= l+1
varWert = arrAlt(lgZähler)
Redim arrNeu(1 to l)
arrNeu(l) = varWert
cells(5,l) = arrNeu(l)
Endif
Next lgZähler


' l = 1

Aber trotzdem vielen Dank für den Lösungsansatz, ich hätte es sonst wohl nicht geschafft.
Gruss Daniel

Anzeige
Re: einzelne Arrayfelder löschen
17.10.2002 08:57:26
steph@n
Hi Daniel,

hast recht! Aber mit der Lösung wie Du sie jetzt umgesetzt hast, müsstest Du Dir sicher sein, dass die Obergrenze Deines alten Arrays nicht größer als 100 ist und dass die Untergrenze auch wirklich bei 1 beginnt (Die Untergrenze eines Arrays kann z.B. aber auch bei 0 oder erst bei 5 beginnen!). Um dies flexibel zu halten, arbeite besser mit diesem Ansatz:

lgUntergrenze = LBound(arrAlt,1)
lgObergrenze = UBound(arrAlt,1)

For IgZähler lgUntergrenze to lgObergrenze
If arrAlt(lgZähler) <> "" then
l= l+1
varWert = arrAlt(lgZähler)
Redim arrNeu(1 to l)
arrNeu(l) = varWert
cells(5,l) = arrNeu(l)
Endif
Next lgZähler


Gruss Stephan


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige