Nur eine Zeile in ein Array einlesen
#1
ich muss eine Zeile in ein Array einlesen, das geschieht wie folgt:

Dim aZ() as variant

aZ = Sheets("Daten").range("A1:IV1").value

... Hier folgt die Verwendung des Arrays.

Sheets("Daten").Range("A1:IV1").value = aZ

Leider kann es kein Range-Objekt sein, weil die Abarbeitung von mehreren Zeilen im gleichen VBA-Modul/Prozedur möglich sein muss. Trotzdem möchte ich im Falle einer einzelnen Zeile das damit generierte mehrdimensionales Array (1 to 1, 1 to x) nicht Zellenweise sondern als ganze Zelle an einem Stück reinschreiben, aus Geschwindigkeitsgründen. Vielleicht muss es in ein zweites Array umgeschrieben werden, doch ich weiss nicht so recht wie, damit es dann wieder auf diese einzelne Zeile passt.

Vielen Dank und Gruss
Stefan
Antworten Top
#2
Sorry, aber Ich verstehe nicht was Du vorhast.
Antworten Top
#3
ok, manchmal kommt nur eine Zeile also von "A1:IV1" (1 Zeile) und manchmal "A1:IV5" (mehrere Zeilen). Ich möchte beide Möglichkeiten in einem Ruck in die Tabelle schreiben und es so lange als Möglich als Array bearbeiten.
Antworten Top
#4
Ah, kapiert.

Da Du mit dieser Methode stets ein 2D-Array bekommst, egal ob A1:V1 oder A1:IV5, musste der .Resize()-Eigenschaft nur mitteilen, welche Dimensionen Dein 2D-Array bereithält.

Code:
Range.Resize(AnzahlZeilen, AnzahlSpalten).Value = Array

Folglich:
Code:
Range("A1").Resize(UBound(ArrayVariable,1),UBound(ArrayVariable,2)).Value = ArrayVariable

Wenn Dein erster Post so formuliert gewesen wäre wie nach Deiner Korrektur, hätte Ich Dich gleich verstanden :)
Antworten Top
#5
Guten Tag Marco

Sorry, für die notwendige Nachbesserung meinerseits und vielen Dank für Deine Bemühungen. Leider geht es nicht, nun stehen in allen Zellen der Zeile entlang immer der gleiche Begriff aus dem Array von Position 1, 1.
so gemacht:

Dim lR as long

lR = 5

aY = ws.Range("A" & lR & ":IV" & lR).value
.....
ws.Range("A" & lR).Resize(Ubound(aY, 1), uBound(aY, 2)).value = aY

.. und das Array ist korrekt abgefüllt (1.1, 1.2, 1.3 usw.) mit den zu erwartenden Attributen. Gibt es allenfalls Probleme mit ausgeblendeten Spalten hierin?

Gruss und Dank.
Stefan
Antworten Top
#6
Jup.

Aber probier den Code doch selbst mal aus (ohne ausgeblendete Spalten).
Antworten Top
#7
Guten Tag
Es funktioniert  18
Muss was falsch gemacht haben beim schrittweise prüfen. Jetzt auch mit ausgeblendeten Spalten. Vielen Dank.

Gruss
Stefan
Antworten Top
#8
Guten Tag Mase
Danke für die Unterstützung. Es hat geklappt. Es sind in meinem Fall die gefilterten Zeilen, die es nicht verträgt und so scheint mir unabhängig davon, ob es sich bei der Anwendung vom Array um eine sichtbare oder unsichtbare Zeile handelt. Es verträgt dann die Anwendung eines Filters generell nicht. Sobald ich diesen vorher aufhebe, geht das zurückschreiben in die Zeile (auch bei ausblendeten Spalten) einwandfrei. Ist jedoch eine Spalten-Filterung da, dann schreibt das Array den ersten Wert (1, 1) in sämtliche Spalten der Zeile rein. Eigentlich ist das nicht ganz nachvollziehbar, jedoch immerhin überwindbar. 
Auf jeden Fall vielen herzlichen Dank für Deine wertvolle Unterstützung.
Gruss
Stefan 18
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste