Herbers Excel-Forum - das Archiv

Array in Tabelle kopieren, Verlust von Format


Betrifft: Array in Tabelle kopieren, Verlust von Format
von: Mikkey

Geschrieben am: 13.09.2019 11:26:47
Hallo zusammen,
ich kopiere ein Array mit den folgenden 3 Funktionen in ein Tabellenblatt, das funktioniert auch sehr gut.
Public Sub ArrFillFromTopLeft(R As Range, Arr) 'fills an entire Array from a single TopLeft- _
Cell-Range
R.Resize(ArrRowCount(Arr), ArrColCount(Arr)).Value = Arr
End Sub
Public Function ArrRowCount(Arr) As Long
ArrRowCount = UBound(Arr, 1) - LBound(Arr, 1) + 1
End Function
Public Function ArrColCount(Arr) As Long
ArrColCount = UBound(Arr, 2) - LBound(Arr, 2) + 1
End Function
Dabei habe ich aber ein Problem: In einigen Spalte (deren Abfolge dynamisch ist...) stehen meistens Texte, teilweise aber auch nur %-Werte (Bsp: 33%). Diese werden leider beim Schreiben ins Tabellenblatt automatisch in Zahlwerte (Bsp: 0,33) umgewandelt. Das ist meines Wissens nach soweit auch klar, die Spalte ist ja als "Standard" formatiert. Wenn ich die Spalte vorher als Text formatiere, dann sollte meiner Meinung nach der Wert erhalten bleiben.
Meine Fragen:
1. Ist meine diesbezügliche Annahme korrekt?
2. Wie kann ich allenfalls Alternativ einzelne Spalten aus dem Array ins Tabellenblatt kopieren (durch alle Spalten loopen und dabei vorher die Spalte wenn notwendig als Text formatieren)? Alle Einträge durchloopen und eintragen finde ich nicht so prickelnd, im Array stehen teilweise über 200.000 Einträge...
3. Eine andere gute Idee um das Problem zu lösen?
Danke im Voraus für Eure Bemühungen!
Lg Mikkey

Betrifft: AW: Array in Tabelle kopieren, Verlust von Format
von: 1712876.html

Geschrieben am: 13.09.2019 12:27:14
Hallo,
wenn du die Spalte als Text formatierst, sind anschließend alle Werte Text.
Formatier doch mal spaßeshalber eine Zelle als Text und schreib 0,33 rein. Daraus kannst du durch einfaches Formatieren keine 33% machen.
Du musst einfach das Array in die Zellen schreiben und anschließend die Spalten formatieren.
Gruß
Rudi

Betrifft: AW: Array in Tabelle kopieren, Verlust von Format
von: 1712880.html

Geschrieben am: 13.09.2019 12:34:28
Hallo Rudi,
danke für Deine Antwort, aber leider habe ich mich ganz offenbar missverständlich ausgedrückt, sorry! Im Array ist effektiv der TEXT "33%" vorhanden (geprüft!). Beim Ausgeben in die Tabelle wird dieser korrekte Text nun neu als Zahl interpretiert und daraus entsprechend 0,33 gemacht. Wie Du richtig schreibst, nützt es dann auch nichts mehr, die Zelle als Text zu formatieren, dann ist der Schaden bereits angerichtet. Und genau das will ich verhindern, es soll weiter "33%" in der Zelle stehen.
Ich hoffe, das ist nun ein wenig klarer, hast Du mir dazu ev. einen Tipp?
Danke im Voraus
Mikkey

Betrifft: AW: Array in Tabelle kopieren, Verlust von Format
von: 1712881.html

Geschrieben am: 13.09.2019 12:43:04
Hallo,
wenn du tatsächlich nur Text in den Zellen haben willst, musst du sie vorher als Text formatieren.:
Public Sub ArrFillFromTopLeft(R As Range, Arr) 'fills an entire Array from a single TopLeft- _
Cell-Range
With R.Resize(ArrRowCount(Arr), ArrColCount(Arr))
.Numberformat="@"
.Value = Arr
End With
End Sub
Gruß
Rudi

Betrifft: Danke vielmals!
von: 1712883.html
Geschrieben am: 13.09.2019 12:45:57
Hallo Rudi,
das ist eine gute Idee, mit dem kann ich was anfangen! Ich versuch das mal umzusetzen, danke Dir vielmals!
Lg Mikkey

Excel-Beispiele zum Thema "Array in Tabelle kopieren, Verlust von Format"
Suche über mehrere Tabellen Benennen von Tabellenblättern mit Monatsnamen
Druckseitenlinien im Tabellenblatt Tabellenblattnamen in ein Listenfeld einlesen
Suchbegriff über mehrere Tabellenblätter suchen. Tabellenblätter benennen
Tabellenblatt auswählen Zustand von Tabellenblatt-Checkboxes ermitteln
Tabellenblattnamen der VBE-Projekte ändern Tabellenblattnamen nach Datum
Bewerten Sie hier bitte das Excel-Portal