Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1800to1804
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
Inhaltsverzeichnis

Angezeigte Zellinhalte in ein Array

Angezeigte Zellinhalte in ein Array
27.12.2020 22:55:38
Martin
Hallo Excel-Freunde,
gibt es eine Möglichkeit die durch Zellformatierung angepassten Zellinhalte mit einem Schlag in ein Array zu überführen? Damit meine ich, dass die angezeigten Zellinhalte ohne Schleife in ein Array übertragen werden sollen.
Ich habe auch eine stark vereinfachte Beispieldatei hochgeladen:
https://www.herber.de/bbs/user/142605.xlsm
Obwohl die "Text"-Eigenschaft auf eine einzelne Zelle angewandt werden kann, funktioniert es bei einem Zellbereich bestehend aus mehreren Zellen nicht mehr:
Sub Texte()
Dim varWerte As Variant
Debug.Print Range("C8").Text    'geht
Debug.Print Range("C11").Text   'geht
varWerte = Range("C5:C11").Text 'geht nicht
MsgBox Join(Application.Transpose(varWerte), vbCrLf)
End Sub
Da ich regelmäßig sehr viele Zellen zur Weiterverarbeitung auslesen muss, dauert der Schleifendurchlauf einfach zu lange. Für Lösungsvorschläge wäre ich sehr dankbar.
Viele Grüße
Martin

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Angezeigte Zellinhalte in ein Array
27.12.2020 23:19:17
volti
Hallo Martin,
lass .Text weg, dann sollte es gehen. Das Array nimmt ohnehin nur den Text auf..
Code:
[Cc]

Sub Texte() Dim varWerte As Variant Debug.Print Range("C8").Text 'geht Debug.Print Range("C11").Text 'geht varWerte = Range("C5:C11") Debug.Print varWerte(1, 1) MsgBox Join(Application.Transpose(varWerte), vbCrLf) End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Angezeigte Zellinhalte in ein Array
27.12.2020 23:34:52
Martin
Hallo Karl-Heinz,
ich danke dir für deine Antwort. Bei mir werden aber nicht die angezeigten Zellinhalte, sondern die wahren Zellwerte (also .Value) in das Array geschrieben:
Sub Texte()
Dim varWerte As Variant
varWerte = Range("C5:C11")
    Debug.Print Range("C8").Text   '="Fünfzehn", wg. Formatierung: [=15]"Fünfzehn";Standard
Debug.Print varWerte(4, 1)     '="15"
MsgBox Join(Application.Transpose(varWerte), vbCrLf)
End Sub
Könntest du dir das bitte noch einmal ansehen? Ich arbeite noch mit Excel 2010, verhalten sich aktuellere Excel-Versionen vielleicht anders?
Viele Grüße
Martin
Anzeige
AW: Angezeigte Zellinhalte in ein Array
27.12.2020 23:54:06
volti
Hallo Martin,
nein, bei mir funktioniert das mit dem angezeigten Text auch mit Version 2016 nicht.
Sorry, da kann ich dann doch nicht weiterhelfen.
VG KH
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 00:15:14
Martin
Hallo Karl-Heinz,
hab trotzdem vielen Dank deine Bemühungen, vielleicht kommt einem anderen Forenmitglied eine Idee. Wenn es nicht anders geht, dann werde ich die angezeigten Zellinhalte wohl doch alle einzeln über eine Schleife auslesen müssen.
Viele Grüße
Martin
AW: Angezeigte Zellinhalte in ein Array
27.12.2020 23:49:10
onur
"die durch Zellformatierung angepassten Zellinhalte" ? Die Zellinhalte werden nicht angepasst, sondern nur die Anzeige der Werte. Die Werte bleiben unberührt.
Du kannst zwar Zellen formatieren. aber nicht Variablen.
Anzeige
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 00:09:51
Martin
Hallo Onur,
ich finde es nur etwas merkwürdig, dass zum Beispiel durch die Eigenschaft ".Formula" alle Formeln in das Array übertragen werden, aber diese Vorgehensweise nicht analog mit der Eigenschaft ".Text" klappt. Mir erschließt sich nicht der Sinn, weshalb ".Text" nur auf einzelne Zelle angewendet werden kann.
Viele Grüße
Martin
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 00:13:44
onur
Google mal "VBA .Text", dann findest du u.A. das hier:
Bemerkungen:
Die Text -Eigenschaft wird am häufigsten für einen Bereich einer Zelle verwendet.
Wenn der Bereich mehr als eine Zelle enthält, gibt die Text -Eigenschaft null zurück,
außer wenn alle Zellen im Bereich identische Inhalte und Formate aufweisen.

Das Selbe gilt auch für .NumberFormat.
Anzeige
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 00:29:52
Martin
Hallo onur,
dass es nicht klappt, wussten wir ja schon. Dass es auch so von Microsoft vorgesehen ist, haben wir jetzt Dank deiner Recherche schwarz auf weiß. Dennoch finde ich es irrational, dass beim Auslesen von Zell-Eigenschaften solche Unterschiede gemacht werden.
Dann gibt es sicher auch keine "knackige" Alternative zum Schleifendurchlauf aller Zellen, oder?
Viele Grüße
Martin
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 00:32:52
onur
Kommt drauf an, warum GENAU du alles unbedingt in ein Array packen willst.
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 01:00:18
onur
Nochmal: Warum GENAU glaubst du, alles in ein Array packen zu müssen?
Ich frage nur, weil es evtl eine Alternative dazu gibt.
Anzeige
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 01:15:46
Martin
Hallo Onur,
entschuldige bitte, dass ich deine Frage nicht beantwortet hatte. Die Daten sollen in eine alte Excel-Tabelle (xls, also 2003er-Format) zur Weiterverabeitung in einer anderen Software exportiert werden. Dabei dürfen keine Formatierungen in den Zellen enthalten, da es sonst zu Verarbeitungsfehlern kommt. Insbesondere Zeitformate (z.B. auf Hundertstel Sekunden elektronisch gemessene Zeiten) bereiten Probleme. Deshalb wäre es perfekt einfach den benutzten Bereich wie in den Zellen angezeigt in eine neue Arbeitsmappe kopieren zu können.
Viele Grüße
Martin
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 00:22:27
onur
Ich weiss gar nicht, was du für ein Problem mit Schleifen hast. Einen Bereich mit 21.000 Zellen per Schleife in ein Array zu kopieren, dauert nur 0,22 sec.
Anzeige
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 00:32:58
Martin
...dann hast du sicher einen wesentlich schnelleren Rechner als ich. Ich arbeite noch mit Excel 2010, weil diese Excel-Version meine Aufgaben deutlich schneller als die Nachfolger-Excelversionen verrichtet.
...Deren Formatierung kann man nur übernehmen, ...
28.12.2020 00:19:13
Luc:?
…Martin°,
in die Variable, oder erneut festlegen (für die Variable), was (bei unterschiedlichen Formatierungen*) in einem Bereich ebenfalls eine Schleife erforderte.
° Mal als Fortsetzung von Onurs AW.
* Muss erst mal testen, ob's doch noch anders geht. Im Laufe des Montags!

Morhn, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Anzeige
AW: ...Deren Formatierung kann man nur übernehmen, ...
28.12.2020 00:34:30
Martin
Hallo Luc,
ich danke auch dir und warte den heutigen Tag gespannt ab ;-)
Viele Grüße
Martin
AW: Angezeigte Zellinhalte in ein Array
28.12.2020 02:29:26
Daniel
Hi
Vielleicht reicht es aus, das Tabellenblatt mit den formatierten Daten als CSV-Datei zu speichern.
Dabei werden meines Wissens nach die angezeigten Werte in die CSV übernommen.
(Zum überprüfen bitte einem Text-Editor verwenden, nicht Excel)
Vieleicht kannst du ja dann diese CSV-Datei für den Import in die andere Software verwenden.
Wenns ein Excelblatt sein soll, kannst du die CSV auch wieder importieren, ggf dabei als Text importieren um die automatische Typumwandlung auszuschließen.
Alternativ würde mir noch folgender Workaround einfallen, um einen Zellbereich ohne Schleife mit formatierten Werten in ein Array zu bekommen:
- Lege eine Listbox an
- verküpfe die Listbox mit dem zu konvertierenden Zellbereich, in dem du die Adresse des Zellbereichs in die Eigenschaft RowSource/ListRows schrreibst
- Übernehme die Listboxwerte ins Array: myArr = Listbox1.List
Ob das aber auch schneller ist, müsstest du mal testen.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige