Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA Daten anderes Blatt in Array

Forumthread: Excel VBA Daten anderes Blatt in Array

Excel VBA Daten anderes Blatt in Array
27.12.2019 10:42:59
Werner
Hallo Excel-Profis,
ich habe wieder einmal ein kleines Problem und hoffe auf eine einfache Lösung.
Den Inhalt einer Tabelle (ab Zeile 2) möchte ich in einen Array schreiben. Obwohl ich den Namen des Blattes angebe, bekomme ich immer dann einen Fehler 1004, wenn das genannte Blatt nicht gleichzeitig das aktive Blatt ist.
Mein Befehl:
IXArray = Sheets(Vorwahl).Range(Cells(2, 1), Cells(MaxRowFW - 1, 1))
Was ist an diesem Befehl falsch?
Gruß
Werner
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Daten anderes Blatt in Array
27.12.2019 10:45:27
Torsten
Hallo,
den Namen des Blattes in ""

IXArray = Sheets("Vorwahl").Range(Cells(2, 1), Cells(MaxRowFW - 1, 1))

Gruss Torsten
AW: Excel VBA Daten anderes Blatt in Array
27.12.2019 10:49:03
Regina
Hi Werner,
hast Du mal geprüft, was in der Variablen "Vorwahl" steht? Ist da der korrekte Blattname drin? oder heißt das Blatt "Vorwahl"? Dann bitte in " " setzen.
Gruß
Regina
Anzeige
AW: Excel VBA Daten anderes Blatt in Array
27.12.2019 10:50:42
Nepumuk
Hallo Werner,
so:
With Worksheets(Vorwahl)
    IXArray = .Range(.Cells(2, 1), .Cells(MaxRowFW - 1, 1))
End With

Gruß
Nepumuk
Anzeige
AW: Excel VBA Daten anderes Blatt in Array
27.12.2019 13:30:17
Werner
Hallo Torsten, hallo Regina,
Danke für Eure Antworten. Natürlich handelt es sich um eine Variable mit dem richtigen Inhalt. Sonst würde die Routine nicht funktionieren, wenn dass genannte Blatt gleichzeitig das aktive Blatt ist.
Hallo Nepumuk,
auch Dir herhzliche Dank. Leider hat Dein Vorschlag auch nicht geholfen. Wenn sonst nichts hilft, muss ich das gewünschte Blatt zum aktiven Blatt machen, dann meinen Befehl absetzen, um danach wieder zum ursprünglichen Blatt zurückzukehren.
Ich warte jetzt noch ein paar Tage, ob doch noch jemand eine andere Lösung hat. Spätestens am 1. Januar werde ich dann - wohl oder übel - das angesprochene Blatt zum aktiven Blatt machen (müssen).
Gruß
Werner
Anzeige
AW: Excel VBA Daten anderes Blatt in Array
27.12.2019 13:48:33
Torsten
Hallo Werner,
kannst du mal den kompletten Code mit Variablendeklaration posten? Dann kann man vielleicht den Fehler, der vielleicht woanders steckt, ausfindig machen.
Gruss Torsten
AW: Excel VBA Daten anderes Blatt in Array
27.12.2019 14:37:23
Werner
Hallo Torsten,
der Fehler steckt darin, dass die Angabe das Blatt-Namens im dargestellten Befehl ohne Wirkung ist.
IXArray = Sheets(Vorwahl).Range(Cells(2, 1), Cells(MaxRowFW - 1, 1))
Auch der Vorschlag von Nepumuk hat keine Änderung gebracht,
Nochmals: wenn ich dann das entsprechende Blatt aktiviere, läuft der Code fehlerfrei.
Gruß
Werner
Anzeige
AW: Excel VBA Daten anderes Blatt in Array
27.12.2019 14:51:11
Nepumuk
Hallo Werner,
teste mal:
IXArray = Sheets(Vorwahl).Cells(2, 1).Resize(MaxRowFW, 1).Value

Gruß
Nepumuk
AW: Excel VBA Daten anderes Blatt in Array
27.12.2019 15:04:35
GerdL
Hallo,
die fünfte Kerze brennt! :-)
Sub test()
Dim IXArray As Variant
Dim MaxRowFW As Long
Dim Vorwahl As String
Vorwahl = "Tabelle2"
Sheets(Vorwahl).Range("A2:A7") = WorksheetFunction.Transpose(Array(2, 3, 4, 5, 6, 7))
MaxRowFW = 7
IXArray = _
Sheets(Vorwahl).Range(Sheets(Vorwahl).Cells(2, 1), Sheets(Vorwahl).Cells(MaxRowFW - 1, 1))
For L = LBound(IXArray, 1) To UBound(IXArray, 1)
MsgBox IXArray(L, 1)
Next
End Sub

Gruß Gerd
Anzeige
AW: Excel VBA Daten anderes Blatt in Array
27.12.2019 15:14:41
Werner
Hallo Nepumuk,
Danke, das war die Lösung. Mit dem neuen Code funktioniert es ohne Probleme.
PS: Weil ich die Kopfzeile nicht mitkopieren möchte, muss ich vom MaxRowFW noch 1 abziehen.
Mein Probblem ist damit innerhalb weniger Stunden behoben.
Gruß
Werner
;
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Daten aus einem anderen Blatt in ein Array schreiben


Schritt-für-Schritt-Anleitung

  1. Blattnamen angeben: Stelle sicher, dass der Blattname in Anführungszeichen gesetzt wird. Beispiel:

    IXArray = Sheets("Vorwahl").Range(Cells(2, 1), Cells(MaxRowFW - 1, 1))
  2. Verwendung von With-Anweisung: Du kannst die With-Anweisung verwenden, um den Code lesbarer zu gestalten:

    With Worksheets("Vorwahl")
       IXArray = .Range(.Cells(2, 1), .Cells(MaxRowFW - 1, 1))
    End With
  3. Wertzuweisung an das Array: Um den Wert direkt in ein Array zu schreiben, benutze die Resize-Methode:

    IXArray = Sheets("Vorwahl").Cells(2, 1).Resize(MaxRowFW, 1).Value
  4. Fehlervermeidung: Überprüfe, ob die Variable Vorwahl den richtigen Blattnamen enthält.


Häufige Fehler und Lösungen

  • Fehler 1004: Dieser Fehler tritt auf, wenn das angegebene Blatt nicht aktiv ist. Achte darauf, dass Du den Blattnamen korrekt angibst.

  • Falscher Blattname: Wenn die Variable Vorwahl nicht den erwarteten Blattnamen enthält, wird der Code nicht funktionieren. Überprüfe den Inhalt dieser Variable.

  • Aktivierung des Blattes: Wenn es keine andere Lösung gibt, kannst Du das Blatt aktivieren, um den Code auszuführen, was jedoch nicht optimal ist.


Alternative Methoden

  • Direktes Arbeiten mit dem Array: Wenn Du die Daten nicht in ein Array schreiben möchtest, kannst Du sie direkt in die Zellen einfügen, was oft einfacher ist.

  • Verwendung von WorksheetFunction: Du kannst Funktionen wie Transpose verwenden, um Daten schneller zu transponieren und in ein Array zu übertragen:

    Sheets("Vorwahl").Range("A2:A7") = WorksheetFunction.Transpose(Array(2, 3, 4, 5, 6, 7))

Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie man Daten aus einem anderen Blatt in ein Array überträgt:

Sub Test()
    Dim IXArray As Variant
    Dim MaxRowFW As Long
    Dim Vorwahl As String
    Vorwahl = "Tabelle2"

    ' Beispielhafte Daten einfügen
    Sheets(Vorwahl).Range("A2:A7") = WorksheetFunction.Transpose(Array(2, 3, 4, 5, 6, 7))

    MaxRowFW = 7
    IXArray = Sheets(Vorwahl).Range(Sheets(Vorwahl).Cells(2, 1), Sheets(Vorwahl).Cells(MaxRowFW - 1, 1))

    For L = LBound(IXArray, 1) To UBound(IXArray, 1)
        MsgBox IXArray(L, 1)
    Next
End Sub

Tipps für Profis

  • Optimierung des Codes: Verwende Arrays, um die Verarbeitungsgeschwindigkeit zu erhöhen, besonders bei großen Datenmengen.

  • Debugging: Nutze Debug.Print um Werte in der Konsole auszugeben, was dir helfen kann, Fehler schneller zu finden.

  • VBA Dokumentation: Halte Dich an die offizielle VBA Dokumentation, um die besten Praktiken zu lernen, insbesondere, wenn Du mit inarray vba oder vba inarray arbeitest.


FAQ: Häufige Fragen

1. Wie kann ich den Fehler 1004 vermeiden?
Achte darauf, dass der korrekte Blattname in Anführungszeichen gesetzt ist und dass das Blatt existiert.

2. Was mache ich, wenn ich die Kopfzeile nicht mitkopieren möchte?
Reduziere den MaxRowFW um 1, um die Kopfzeile auszuschließen, bevor Du die Daten in das Array überträgst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige