Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
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

Zelleninhalte als Tabellenblattnamen definieren

Zelleninhalte als Tabellenblattnamen definieren
28.07.2014 11:51:33
D_Gonzalez
Hallo Zusammen,
folgende Situation: ich habe zwei Excel-Dateien geöffnet. Die eine ist eine Aggregationsdatei, aus der bestimmte Daten aus der zweiten, wechselnden Datei ausgelesen werden sollen. In der Aggregationsdatei gibt es ein Tabellenblatt, in dem die für die Datenanalyse relevanten Tabellenblattnamen in einer Spalte untereinander aufgelistet sind.
Ich möchte ein Makro basteln, das in meiner zweiten geöffneten Datei in relevanten Tabellenblättern den vordefininierten Wertebereich ausliest und diesen in der Aggregationsdatei im Tabellenblatt „Werte“ fortlaufend auflistet.
Hier mal das Makro, mit einigen Kommentaren versehen:
Sub Makro()
Dim Anzahl As Integer
Dim i As Integer
Dim dn As Workbook
Dim j As Worksheet
Set dn = ActiveWorkbook ‘die zweite geöffnete Datei hat wechselnde Bezeichnungen; ich will der  _
jeweils geöffneten Datei einen „variablen Wert“ zuweisen, damit ich sie jeweils ansprechen kann
Set myRange = Workbooks("Aggregation.xlsm").Worksheets("Daten").Range("A2:C51")
Anzahl = Application.WorksheetFunction.Count(myRange)
For i = 1 To Anzahl
j = Workbooks("Aggregation.xlsm").Worksheets("Daten").Cells(i, 1).Name ‘hier erhalte ich  _
einen Laufzeitfehler 1004, Anwendungs- oder objektdefinierter Fehler
Workbooks(dn).Worksheets(j).Select ‘in der jeweiligen Datei soll das in der Schleife  _
definierte Tabellenblatt j ausgewählt werden
Range("A12:D12").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Sheets:=1
Workbooks(dn).Worksheets("Werte").Range("A1000").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Next i
End Sub
Kann mir jemand sagen wo der Fehler liegt?

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalte als Tabellenblattnamen definieren
28.07.2014 12:00:30
Ralf
Hallo,
Anzahl = Application.WorksheetFunction.Count(myRange)
möchtest du die Anzahl der Zellen in dem Range zählen?
Denn:
Anzahl = myRange.Cells.Count
Ansonsten lies die mal die Hilfe zu WorksheetFunction.Count durch.
Wenn du schon den Bereich als Objekt definierst, warum benutzt du dieses Objekt nicht, um den Bereich abzuklappern? Eine Zählschleife bei Ranges macht nur beim Rückwärtsbearbeiten Sinn.
Dim Zelle as Range
For Each Zelle in myRange
Next Zelle
Gruß
Ralf

AW: Zelleninhalte als Tabellenblattnamen definieren
28.07.2014 12:18:01
D_Gonzalez
Hallo Ralf,
ich bin der Meinung, dass dieser Teil des Makros funktioniert. In der wechselnden Datei gibt es eine jeweils unterschiedliche Anzahl von relevanten Tabellenblättern. Ich lasse den Bereich, in dem diese aufgelistet sind zählen, damit die Schleife immer genau sooft wie notwendig durchläuft. Sind im Tabellenblatt "Daten" in Spalte A x Werte, lass die Schleife x mal durchlaufen. Für diesen Zweck ist WorksheetFunction nicht der geeignete Befehl?

Anzeige
AW: Zelleninhalte als Tabellenblattnamen definieren
28.07.2014 12:21:52
D_Gonzalez
Achso ja, ich habe hier eine Information unterschlagen: die Betreffenden Zellen enthalten nur Zahlen (also auch die äquivalenten Tabellenblätter der Datei). Deswegen müsste dieser Befehl funktionieren. Das Problem liegt meiner Einschätzung eher darin, dass ich es nicht schaffe die Inhalte der entsprechenden Zellen als Tabellenblattnamen zu definieren. Ich könnte mich aber natürlich auch täuschen.

AW: Zelleninhalte als Tabellenblattnamen definieren
28.07.2014 14:53:47
Ralf
Hallo,
ja, da liegst du richtig
Der Name der Zelle ist etwas anderen als dessen Inhalt.
Inhalt: .Value oder nichts, also
Worksheets("Daten").Cells(i, 1)
oder
Worksheets("Daten").Cells(i, 1).Value
da du aber j als Worksheet deklariert hast, kannst du der Variablen keinen Wert zuweisen sondern ein Objekt.
Am Besten du definierst j als String.
Denn wenn die Zelleninhalte Zahlen sind spricht du mit Worksheets(j) den Index an, nicht den Blattnamen, weswegen j ein String sein sollte.
Übringens: Objekte weißt man bspw einen Wert zu, indem man SET voranstellt, wie du es bei myRange getan hast.
Gruß
Ralf

Anzeige
AW: Zelleninhalte als Tabellenblattnamen definieren
28.07.2014 17:02:54
D_Gonzalez
Hallo Ralf,
die Definition von j als String war für mein Problem offenbar die Lösung. Das entsprechende Blatt wird wie gewünscht angesteuert.
Danke dir!
Viele Grüße
D_Gonzalez

342 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige