Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
gruß
Marco
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 :)
gruß
Marco
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).
gruß
Marco
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