Microsoft Excel

Herbers Excel/VBA-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

Beiträge aus dem Excel-Forum zum Thema "Array in Tabelle kopieren, Verlust von Format"