Office: VBA Excel Array nicht gleich Array?

Helfe beim Thema VBA Excel Array nicht gleich Array? in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen. Ich habe heute eine für mich eigenartige Situation kennenlernen müssen. Ein Array scheint nicht gleich einem Array zu sein. Wenn ich... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von andysmith, 5. September 2012.

  1. andysmith Erfahrener User

    VBA Excel Array nicht gleich Array?


    Hallo zusammen.
    Ich habe heute eine für mich eigenartige Situation kennenlernen müssen. Ein Array scheint nicht gleich einem Array zu sein.

    Wenn ich ein Array aus einem Zellbereich einlese und dann wieder an einen Zellbereich ausgebe geht das Problemlos.
    Wenn ich aber ein Array über die VBA Definition "Array" anlege, dann wird bei der Range Ausgabe nur der erste Wert ausgegeben.

    Bsp.:

    Code:
    Private Sub TestArrayTest()varARR_Upd_Insert = ThisWorkbook.ActiveSheet.Range("H10:H30").Value
        ThisWorkbook.ActiveSheet.Range("I10:I30").Value = varARR_Upd_Insert
    varARR_Upd_Insert = Array("Auftragsnr.", "Pos.", "Termin", "Ist", "Bemerkung 1", "Bemerkung 2", "Bemerkung 3", _
        "Bemerkung 4", "Prio.", "Steuerung", "Ziel")
        ThisWorkbook.ActiveSheet.Range("M10:M21").Value = varARR_Upd_Insert
    End Sub
    Schon verwirrend das Ganze. Wo liegt hier das Problem??

    Der Ursprung des Ganzen ist, das ich beim Start des Workbooks einen Bereich über eine Benutzerform abfrage, der dann eine ZuordnungsListe über das Array erstellt, die aber erst beim speichern wieder benötigt wird. Normalerweise versuche ich diese Werte immer über .CustomDocumentProperties auf eine nicht sichtbare Variable zu speichern, was aber leider nicht mit Arrays funktioniert. Also musste ich doch wieder über diese, ich speicher die Daten als Text zwischen und lese sie von dort aus, Methode zurückgreifen. Sollte hier jemand noch eine andere glücklichere Methode kennen wäre ich ausserdem über jeden Vorschlag dankbar.
    Hier nochmal das Scenario in Kurzform

    Workbook_Open ==> Daten wählen & Zuordnung treffen
    Workbook_BeforeSave ==> Zuordnung lesen und anwenden

    Vielen Dank für jede Hilfe!

    andysmith
     
    andysmith, 5. September 2012
    #1
  2. schatzi Super-Moderator
    Hallo!

    Eine genaue Erklärung muss ich dir leider schuldig bleiben, aber Abhilfe kann ich schaffen:


    ThisWorkbook.ActiveSheet.Range("M10:M20").Value = WorksheetFunction.Transpose(varARR_Upd_Insert)

    Eine waagerechte Ausgabe (M10:W10) des Arrays hätte funktioniert, daher muss es transponiert werden.
    (Außerdem war dein Range um eine Zelle zu groß.)
     
  3. andysmith Erfahrener User
    Danke für de Antwort!
    Wie ich die Lösung gesehen hatte war mir so einiges klar, auch wenn ich mir noch nicht erklären kann wie & wo beim enlesen in ein Array die Formatierung gespeichert wird. Klar ist, dass die waagerechte dann ein default Wert sein müsste, wenn ich das Array direkt befülle.
    Ich werde gleich meine For Next Formel in dem Teil wieder entfernen. Viel besser so :-)
    Danke nochmal!
     
    andysmith, 5. September 2012
    #3
  4. Exl121150 Erfahrener User

    VBA Excel Array nicht gleich Array?

    Hallo,

    Wenn Du mit "Formatierung" den Datentyp der im Array gespeicherten Daten meinst:
    Es liefert die ARRAY-Funktion (wie in der VBA-Hilfe nachzulesen ist) Daten vom Typ VARIANT zurück:

    Daten vom Typ VARIANT enthalten im Prinzip stets 2 Daten:
    (1) einen Subtyp
    (2) die eigentlichen Daten (die zum Subtyp passen).
    Im Fall der ARRAY-Funktion: diese liefert Daten (1) vom Subtyp "vbArray" zurück.
    Dieser Subtyp bewirkt, dass als die eigentlichen Daten (2) ein Array von Datenelementen enthalten ist. Jedes dieser Datenelemente ist wieder vom Typ VARIANT. Somit enthält jedes Array-Element wieder einen Subtyp (1) und die eigentlichen Daten (2).

    Welche Subtypen (1) es gibt, kann man in der Hilfe-Beschreibung der Funktionen VarType bzw. TypeName nachlesen.

    Die Frage, ob es sich bei dem einfachen Array um ein Zeilen-Array oder um ein Spalten-Array handelt, ist im Bereich von VBA zunächst ohne Bedeutung. Erst wenn man versucht, ein solches Array einem Zellbereich in einem Excel-Arbeitsblatt zuzuweisen, muss man wissen, wie die Array-Zuordnung zu den Zellen des Bereiches im RANGE-Objekt von Excel vorgenommen wird: ein Array entspricht einer zeilenweisen Anordnung der Array-Elemente. Will man genau das nicht, muss man die Zellenzuordnung mit Hilfe der Matrixfunktion TRANSPOSE transponieren (ähnlich wie aus der Matrizenrechnung der Mathematik bekannt).
     
    Zuletzt bearbeitet: 7. September 2012
    Exl121150, 7. September 2012
    #4
Thema:

VBA Excel Array nicht gleich Array?

Die Seite wird geladen...
  1. VBA Excel Array nicht gleich Array? - Similar Threads - VBA Excel Array

  2. VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.

    in Microsoft Excel Hilfe
    VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.: Hallo zusammen, Eine Tabelle mit 9 Worksheets, Datenblatt, Studien, Studie_1 ...Studie_7. Auf dem Deckblatt werden in Zelle B4-B10 die Namen der Studien eingetragen. Davon abhängig ob ein Name...
  3. Excel VBA Spalten mit Ordnerinhalt vergleichen

    in Microsoft Excel Hilfe
    Excel VBA Spalten mit Ordnerinhalt vergleichen: Hallo, Bin ehr Excel VBA Neuling, Würde aber gerne in einer bestehender Tabelle die Auflistung der Ordner mit dem eigentlichen Stand in den besagten Ordner kontrollieren. Also in der Spalte Q10...
  4. Array aus Excel Tabelle einlesen Word VBA

    in Microsoft Excel Hilfe
    Array aus Excel Tabelle einlesen Word VBA: Hallo, ich benötige in einer Word Datei die Werte einer Excel Datei. Ich würde gerne eine Spalte als Array einlesen. Wie das Array ein lesen in Excel geht weiß ich, aber wie schaffe ich den...
  5. Dynamische Tabellen mit automatischer Aktualisierung

    in Microsoft Excel Hilfe
    Dynamische Tabellen mit automatischer Aktualisierung: Hallo in die Runde! Vorab schon mal vielen Dank für alle Mühen und die Hilfe! Ich habe folgendes Anliegen: Ich habe eine Geräteliste als Excel Datei mit einigen verschiedenen Tabellenblättern...
  6. VBA Daten in Array durch inputbox befüllen lassen

    in Microsoft Excel Hilfe
    VBA Daten in Array durch inputbox befüllen lassen: Hi zusammen, Ich hab mal wieder eine Excel VBA Frage. Kurz zur Erklärung: Ich erhalte von einem Kunden eine Datei mit wiederum seinen Kunden, die ein bestimmtes Produkt gekauft haben(den Sinn...
  7. Excel VBA Array in ein Tabellenblatt schreiben

    in Microsoft Excel Hilfe
    Excel VBA Array in ein Tabellenblatt schreiben: Liebe Alle! Ich würde gerne ein Array von dem ich im Vorhinein noch nicht weiß, wie groß es ist in ein Tabellenblatt schreiben. Hier mal mein Beispielcode: Code: Public Sub matrix() 'groesse...
  8. ComboBox mit Array befüllen

    in Microsoft Excel Hilfe
    ComboBox mit Array befüllen: Hallo Allerseits :), Und zwar habe ich folgendes Problem: Ich erstelle ein neues Sheet, erstelle eine ComboBox und möchte sie mit einem vordefinierten Array befüllen (Alles in VBA). Im Moment...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden