Anzeige
Archiv - Navigation
880to884
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
880to884
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array einen Bereich übergeben

Array einen Bereich übergeben
22.06.2007 10:00:00
Ulf
Hallo ihr Excelprofis
Ich habe einen Array einen Bereich übergeben.
Bereich=worksheets(1).range("a1:H500")
Dann klappere ich mit einer Schleife ab und suche ich einen bestimmten Wert im Bereich und möchte dann einen bestimmten Bereich an ein sheet übergeben.
Geht das überhaupt oder muß man jedes einzeln übergeben?
z.Bsp. so?
.Range(.Cells(id, 2), .Cells(id, 4)) = Bereich(Range(Cells(i, 5), Cells(i, 7)))
Im Voraus vielen Dank
Mfg Ulf

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array einen Bereich übergeben
22.06.2007 21:36:34
Daniel
Hi
wenn du dein Array wie in deinem Bespiel über eine Range befüllt hast, dann kannst du das Array genauso einfach wieder zurückschreiben, wie du es eingelesen hast.
Wichtig beim zurückschreiben ist, daß das Array und der Zellbereich gleich groß sind.
Bereich=worksheets(1).range("a1:H500")
...
Worksheets(1).range("a1:h500") = Bereich
Gruß, Daniel

AW: Array einen Bereich übergeben
23.06.2007 19:52:20
Ulf
Hallo Daniel
Das ist ja mein Problem
Ich möchte ja nur ein bereich vom array zurückgeben und nicht das ganze
Worksheets(1).range("a1:h500") = Bereich
klappt ist klar
aber
Worksheets(1).range("a100:h100") = Bereich
nicht
auch nicht
Worksheets(1).range("a100:h100") = Bereich((100,1),(100,8))
ist natürlich ein Beispiel
Worksheets(1).range("a100") = Bereich(100,1) klappt auch
aber ich hätte gerne einen bereich zurückgegeben
mfg Ulf

Anzeige
AW: Array einen Bereich übergeben
23.06.2007 21:23:43
Gerd
Hallo Ulf,
etwas kleiner dimensioniert zum Testen.

Sub test()
Dim Bereich As Range
Set Bereich = Tabelle1.Range(Tabelle1.Cells(2, 1), Tabelle1.Cells(10, 8))
Tabelle2.Range(Tabelle2.Cells(5, 3), Tabelle2.Cells(8, 7)).Value = _
Range(Bereich(1, 2), Bereich(4, 6)).Value
End Sub


Gruß Gerd

AW: Array einen Bereich übergeben
24.06.2007 15:56:05
Ulf
Hallo Gerd
Danke
eigendlich ganz logisch
so habe ich es gemeint
mfg Ulf

AW: Array einen Bereich übergeben
24.06.2007 16:33:00
Daniel
Hi
wobei zu beachten ist, das BEREICH in diesem Fall keine Array-Variable mehr ist, sondern ein Range-Objekt.
sobald die Daten aus Bereich einzeln in einer Schleife bearbeitet werden müssen, wird diese Variante deutlich langsamer sein.
Gruß, Daniel

Anzeige
AW: Array einen Bereich übergeben
24.06.2007 16:13:00
Daniel
Hi
wenn ich es nochmal für mich formulieren darf:
du hast eine Array-Variable "Bereich". (500 x 8)
von dieser Array-Variabel "Bereich" möchtsest du einen Ausschnitt, dh. mehrere Werte, aber nicht alle, in ein Excel-Tabellenblatt zurückgeben.
Da gibts (meines bescheidenen Wissens nach) zwei möglichkeiten:
1. in einer Schleife einzeln Wert für Wert von der Array-Variable nach Excel zurückschreiben
2. - eine neue Array-Variable erstellen, die ganauo groß dimensioniert ist, wie der gewünschte Ausschnitt
- diese neue Array-Variable per Schleife aus der alten Array-Variable befüllen (einzeln. Wert per Wert)
- die neue Array-Variable als Ganzes ins Excelblatt zurückschreiben
Variante 2 ist jetzt jetzt von der Programmierung her schon etwas komplexer, der Vorteil besteht aber darin, das VBA rasend schnell ist, solange nur mit Array-Variablen gearbeitet wird. Sobald Excel-Zellen oder RANGE-Objekte ins Spiel kommen, wirds um 10er-Potenzen langsamer.
der Ratschlag, "keine Schleifen verwenden" kann daher ignoriert werden, solange nur mit Array-Variablen gearbeitet wir.
Daher ist es am effeiktivsten, den Ausschnitt erst in eine neue Arry-Variabel zu schreiben, die dann enBloc nach Excel zurückgeschrieben werden kann.
Gruß, Daniel
PS. um das Zurückschreiben der Arrays nach Excel schnell und einfach zu Programmieren (Zellbereich und Array-Variable müssen ja genau gleich groß sein), solltest du dich mal mit den Funktionen UBBOUND(Bereich,1) für array-Variablen und Range(xxx).RESIZE(x,y) vertraut machen.

Anzeige
AW: Array einen Bereich übergeben
24.06.2007 16:52:21
Gerd
Hallo Daniel,
soweit die Anwendungshäufigkeit es erfordert u. wenn Du Effektivität mit Geschwindigkeit gleichsetzt,
stimme ich dir voll zu.
Lasse Ulf erst mal verstehen, dass ein Range-Objekt auch ein zwei-dimensionaler eins-basierter Variant-Array ist.
Mit echten Arrays(Datenfeldern) kann er sich dann immer noch befassen.
Gruß Gerd

AW: Array einen Bereich übergeben
24.06.2007 18:04:10
Daniel
Hi
naja, bei VBA-GUT bin ich halt davon ausgegangen, daß Array-Variablen ihm ein begriff sind, zumal die eingangsfrage ja recht eindeutig in diese Richtung gestellt war.
Gruß, Daniel

AW: Array einen Bereich übergeben
25.06.2007 14:31:57
Ulf
Hallo Gerd und Daniel
Erst einmal vielen Dank an euch beiden
mir geht es schon um die Geschwindigkeit und eure Antworten haben mir dabei sehr geholfen
mfg Ulf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige