Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Arbeitsblattname als Variable

Arbeitsblattname als Variable
13.09.2015 11:18:51
Gerd
Ich habe: zwei Arbeitsmappen ("Bericht" und "Beamer") mit je einem Arbeitsblatt ("Spiel_X" und "Anzeige"). Das Arbeitsblatt "Spiel_X" ist eine schlichte Tabelle mit sich ändernden Zelleninhalten. Das Arbeitsblatt "Anzeige" ist optisch aufgehübscht und wird per Beamer angezeigt. Beim Öffnen ist die Arbeitsmappe "Bericht" jeweils eine Andere mit Arbeitsblättern wie z.B. "Spiel_1"; "Spiel_2" usw. und die Arbeitsmappe "Beamer" immer die Gleiche. Diverse Zellinhalte von "Spiel_X" werden bisher per Verknüpfung (='[Bericht.xls]Spiel_X'!$A$17) in "Anzeige" übernommen und bei Änderung automatisch in "Anzeige" aktualisiert.
Ich möchte: da sich bei jedem neuen Start der Arbeitsblattname "Spiel_X" ändert, diesen in eine Variable einlesen, die ich dann im Arbeitsblatt "Anzeige" wieder in einer Verknüpfung zu den variierenden Zellinhalten von "Spiel_X" nutzen kann.
Danke und Gruß
Gerd

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsblattname als Variable
13.09.2015 14:17:48
Sepp
Hallo Gerd,
das geht am einfachsten per > Daten > Verknüpfungen bearbeiten > Quelle ändern
Gruß Sepp

AW: Arbeitsblattname als Variable
13.09.2015 14:45:04
Gerd
Hallo Sepp,
die Quelle ändern allein machts nicht, da in den neuen Quellen der Arbeitsblattname variiert (darauf habe ich keinen Einfluss, da extern vorgegeben), sodass er mühsam in all den existierenden Verknüpfungen auch noch geändert werden muss. Das habe ich bisher durch Suchen/Ersetzen in einem VBA-Programm realisiert, das bei jedem neuen Arbeitsblattnamen entsprechend angepasst werden muss.
Deshalb die Idee, die Änderungen per Variable im VBA-Programm zu erleichtern.
Gruß Gerd

Anzeige
AW: Arbeitsblattname als Variable
13.09.2015 15:05:47
Sepp
Hallo Gerd,
beim ändern der Quelle wirst du auch nach dem Tabellenblatt gefragt!
Gruß Sepp

AW: Arbeitsblattname als Variable
13.09.2015 15:27:37
Gerd
Hallo Sepp,
beim Ändern der Quelle erscheint sofort die Fehlermeldung
Userbild
ohne nach dem Tabellenblatt zu fragen, da in den diversen Verknüpfungen z.B. steht:
='[Datei_01.xls]Spiel_01'!$A17.
Ändere ich die Quelle auf Datei_02.xls mit Arbeitsblattnamen Spiel_02, so entsteht folgerichtig die o.g. Meldung.
Gruß Gerd

Anzeige
nicht nachvollziehbar! o.T.
13.09.2015 15:34:56
Sepp
Gruß Sepp

AW: Arbeitsblattname als Variable
13.09.2015 19:17:33
Peter
Hallo Gert,
ich habe leider keine Lösung gefunden, eine Variante in eine Formel einzubauen. Man kann aber Standardformeln (Spiel_x) einsetzen und die dann durch Ändern in Beziehung zu dem aktiven Arbeitsblatt bringen. Es werden dazu in der Arbeitsmappe "Bericht" (hier unter c1) je Arbeitsblatt freie Zellen benötigt, sowie in der Arbeitsmappe "Beamer" noch zusätzlich c2. In c2 ist die Standardformel enthalten, die durch den Makro in alle relevanten Zellen vom "Beamer" hineinkopiert werden. Anschließend werden die Ausdrücke "Spiel_x" durch den richtigen Blattnamen ersetzt.
Hier die Datei für "Bericht" - bitte unter diesem Namen speichern:
https://www.herber.de/bbs/user/100156.xlsm
...und hier die Datei "Beamer" - bitte ebenfalls unter diesem Namen speichern.
https://www.herber.de/bbs/user/100157.xlsm
Wie ich feststelle, schleppt Excel meinen user in den Formeln mit, bitte lösche die entsprechenden Ausdrücke unter c2 einfach raus.
In der Datei "Bericht" das gewünschte Arbeitsblatt aktivieren und dann in der Datei "Beamer" den Makro1 ausführen. Bitte mal ausprobieren, FeedBack wäre schön.
Mit freundlichem Gruß
Peter Kloßek

Anzeige
AW: Arbeitsblattname als Variable
13.09.2015 20:30:52
Gerd
Hallo Peter,
danke für deine Lösung, die funktioniert wie beschrieben. Aber so richtig glücklich bin ich damit nicht.
Kann man den Blattnamen nicht irgendwie in die Funktion INDIREKT(Bezug;A1) oder eine geeignetere bringen. Das würde mir besser gefallen.
Ich habe es schon mit mit den Blattnamenvariablen "Quelle" und "Ziel" wie folgt probiert:
For i = 0 To 4
Ziel.Cells(17 + i, 1).Value = Quelle.Cells(17 + i, 1).Value 'Namen
Next i
funktioniert zwar, aber Änderungen in der Quelldatei werden nicht automatisch in die Zieldatei übernommen.
Siehst du da einen besseren Ansatz?
Gruß Gerd

Anzeige
AW: Arbeitsblattname als Variable
13.09.2015 21:20:53
Peter
Hallo Gert,
wenn in der Datei "Beamer" viele Bezüge vorhanden sind, könnte man ein Standard-Blatt mit "Spiel_x" in den Formeln erstellen, dieses per Makro kopieren und die Kopie mit "Anzeige" umbenennen. Der Austausch der Bezüge auf das zutreffende Blatt muss dann über sämtliche Zellen erfolgen:

Windows("Bericht.xlsm").Activate
Range("c1").Select
ActiveCell = Blattname
Range("c1").Cut
Windows("Beamer.xlsm").Activate
Range("Anzeige!c1").Select
ActiveSheet.Paste
Blattbez = Range("c1")
Cells.Replace What:="Spiel_x", Replacement:=(Blattbez), LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Das Kopieren und Umbenennen des Standard-Arbeitsblattes (mit einem anderen Namen als "Ansicht") kannst Du einfach aufzeichnen. Das Ergebnis der Aufzeichnung an den Anfang stellen.
M.f.G. Kloßek

Anzeige
AW: Arbeitsblattname als Variable
13.09.2015 21:26:30
fcs
Hallo Gerd,
wenn die Arbeitsmappen "Bericht" (Variabel) und "Beamer" (immer die gleiche) immer gleichzeitig geöffnet sind, dannkannst du im Blatt "Anzeige" von "Beamer" auch mit der Funktion INDIREKT arbeiten, um die Daten aus einem Blatt von "Bericht" auszulesen.
=INDIREKT("'[" & $B$4 & "]" & $B$5 &"'!"& ZELLE("adresse";A3);WAHR)
Dann müssten "nur" der Dateiname und der Blattname aus "Bericht" in jeweils eine Zelle (hier B4 und B5) eingetragen werden.
Ein Makro zur Übertragung des Datei- und Blattnamens kann dann wie folgt aussehen.
Soll das Makro in der Datei "Beamer" integriert werden. Dann wird komplizierter. Hier muss man dann ggf. ein Auswahlmenü für die Datei und das Blatt einbauen.
Gruß
Franz
'Makro in der persönlichen Makroarbeitsmappe oder der "Bericht"-Datei
Sub Beamer_Anzeige_aktualisieren()
' Anzeige in Arbeitsmappe "Beamer" aktualisieren
Dim strDatei As String, strBlatt As String, strBeamer As String
On Error GoTo Fehler
strBeamer = "Beamer.xlsx" 'Name der Datei mit Blatt "Anzeige"
strDatei = ActiveWorkbook.Name
strBlatt = ActiveSheet.Name 'oder auch = ActiveWorkbook.Sheets(1).Name
If strDatei  strBeamer Then
With Workbooks(strBeamer)
With .Worksheets("Anzeige")
.Range("B4") = strDatei
.Range("B5") = strBlatt
End With
.Activate
End With
Else
MsgBox "Makro bitte nicht starten, wenn Datei """ _
& strBeamer & """ die aktive Datei ist"
End If
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case 9 '
MsgBox "Fehler: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Datei """ & strBeamer & """ ist vermutlich nicht geöffnet" _
& " oder Blatt ""Anzeige"" ist nicht vorhanden"
Case Else
MsgBox "Fehler: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige
AW: Arbeitsblattname als Variable
14.09.2015 10:48:13
Gerd
Hallo Peter,
das Einlesen des Blattnamens funktioniert. Den Rest vom Makro finde ich nicht so gut. Das habe ich mir anders vorgestellt - trotzdem Dank.
Hallo Franz,
es stimmt, die AM "Bericht" & "Beamer" sind immer gleichzeitig geöffnet, sodass ich mit INDIREKT(Bezug;A1) arbeiten kann. Deine Syntax habe ich kopiert und getestet, aber sie funktioniert leider nicht. Ich verstehe sie auch nicht ganz - besonders den letzte Teil ZELLE("adresse";A3);WAHR. Erläutere mir bitte die komplette Syntax. Kann man dort nicht die Variablen strBeamer und strBlatt verwenden?
Bisher habe ich mit Verknüpfungen Zelle='[Beamer.xls]Anzeige'!$A$1 usw. gearbeitet. Ist es möglich, diese Verknüpfungen weiterhin unter Verwendung der Variablen strBeamer und strBlatt zu nutzen? Wäre mir die liebste Lösung, weil ich sie verstehe.
Danke & Gruß
Gerd

Anzeige
AW: Arbeitsblattname als Variable
14.09.2015 11:59:21
fcs
Hallo Gerd,
damit du mit INDIREKT arbeiten kannst muss du alle variablen Teile (Dateiname, Blattname und Zelladressen) irgendwie bestimmen,damit am Ende eine Formel wie
='[Beamer.xls]Anzeige'!$A$1

herauskommt. Entweder aus einer Zelle einlesen oder in der Formel berechnen oder in der Formel fest vorgeben.
Sinnvoll ist in deinem Fall den Dateinamen und den Blattnamen aus Bericht in zwei beliebige Zellen im Blatt Anzeige zu schreiben. In den INDIREKT-Formeln werden diese Infos dann aus den Zellen ausgelesen. Du könntest diese beiden Zellen auch mit einem Namen versehen und die Namen in den Formeln verwenden.
=INDIREKT("'[" & $B$4 & "]" & $B$5 &"'!"& ZELLE("adresse";A3);WAHR)
=INDIREKT("'[" & Bericht_Datei & "]" & Bericht_Blatt &"'!"& ZELLE("adresse";A3);WAHR)
Der Teil ZELLE("adresse";A3) legt fest aus welcher Zelle des Bericht_Blatt der Wert ausgelesen werden soll - hier aus A3.
Diese Form ist dann hilfreich, wenn man mehrere Werte in einer Zeile oder Spalte per INDIREKT übernehmen will. Man kann die Zellen mit der Formel dann kopieren und die Zelladressen werden automatisch angepasst.
In der einfachen Form der Formel ist dies nicht der Fall.
=INDIREKT("'[" & Bericht_Datei & "]" & Bericht_Blatt &"'!A3";WAHR)
Hier muss man nach dem Kopieren in den Formeln die auszulesenden Zellen manuell korrigieren.
Es ist aber nicht möglich die Variablen strDatei und strBlatt in die Formeln einzusetzen. Das würde nur funktionieren, wenn man per Makro sämtliche Formeln im Blatt Anzeige neu schreiben würde.
        With Workbooks(strBeamer)
With .Worksheets("Anzeige")
.Range("A7").FormulaR1C1 = "=INDIRECT(""'[" & strDatei & "]" _
& strBlatt & "'!" & "A3" & """,True)"
.Range("C7").FormulaR1C1 = "=INDIRECT(""'[" & strDatei & "]" _
& strBlatt & "'!" & "B3" & """,True)"
'usw.
End With
.Activate
End With

Ansonsten musst du dich mal mit der Hilfe zu INDIREKT befassen, was die Syntax angeht kann ich dir nicht nichts anderes erzählen.
Gruß
Franz

Anzeige
AW: Arbeitsblattname als Variable
14.09.2015 14:31:47
Gerd
Hallo Franz,
ganz herzlichen Dank für die tollen Anleitungen, Tipps und Erläuterungen. Nach einigem Probieren hat auch alles super funktioniert! Dank deiner Hilfe habe ich sogar die Syntaxen kapiert.
Das ist das erste Mal, dass mir jemand in einem Forum wirklich geholfen hat!!!
Bei allen anderen Hilfeversuchen in diversen Foren (nicht nur zu EXCEL, Makros und VBA) hat sich nie wirkliche Hilfe ergeben. Es sind meist selbst ernannte "Experten", die versuchen zu "helfen" - bisher nur blanke Enttäuschung.
Nochmals danke & Tschüssikovski
Gruß Gerd
Userbild
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Arbeitsblattnamen dynamisch in Excel nutzen


Schritt-für-Schritt-Anleitung

Um den Arbeitsblattnamen als Variable in Excel zu nutzen, kannst Du die folgende Vorgehensweise anwenden:

  1. Öffne die Arbeitsmappe: Stelle sicher, dass die Arbeitsmappen „Bericht“ und „Beamer“ gleichzeitig geöffnet sind.

  2. Erstelle eine Zelle für den Blattnamen: In der Arbeitsmappe „Beamer“, wähle eine Zelle (z.B. B5), um den Namen des Arbeitsblatts aus „Bericht“ zu speichern.

  3. Nutze die INDIREKT-Funktion: In einer anderen Zelle kannst Du die folgende Formel verwenden, um den Blattnamen dynamisch einzulesen:

    =INDIREKT("'[" & $B$4 & "]" & $B$5 & "'!" & ZELLE("adresse";A3);WAHR)

    Hierbei steht $B$4 für den Dateinamen und $B$5 für den Blattnamen.

  4. Testen der Verknüpfung: Stelle sicher, dass die Formeln in den Zellen korrekt angezeigt werden, und teste, ob die Daten aus dem Arbeitsblatt „Bericht“ korrekt in „Beamer“ übernommen werden.


Häufige Fehler und Lösungen

  • Fehlermeldung beim Ändern der Quelle: Wenn Du beim Ändern der Quelle sofort eine Fehlermeldung erhältst, überprüfe, ob der Arbeitsblattname in der Verknüpfung korrekt ist. Achte darauf, dass der Arbeitsblattname variabel ist und in der entsprechenden Zelle steht.

  • Verwendung der INDIREKT-Funktion: Wenn die Formel nicht funktioniert, stelle sicher, dass die Zellen für den Dateinamen und Blattnamen korrekt referenziert werden. Diese sollten in den Zellen stehen, die Du in der Formel verwendest.


Alternative Methoden

Eine alternative Methode zur Verwendung des Arbeitsblattnamens als Variable besteht darin, VBA (Visual Basic for Applications) zu verwenden. Hier ist ein einfaches Makro, das den Arbeitsblattnamen automatisch aktualisiert:

Sub UpdateSheetName()
    Dim strDatei As String
    Dim strBlatt As String
    strDatei = ActiveWorkbook.Name
    strBlatt = ActiveSheet.Name
    ' Aktualisiere die Zellen mit den Namen
    Workbooks("Beamer.xlsx").Worksheets("Anzeige").Range("B4").Value = strDatei
    Workbooks("Beamer.xlsx").Worksheets("Anzeige").Range("B5").Value = strBlatt
End Sub

Mit diesem Makro kannst Du den aktuellen Arbeitsblattnamen in die Zellen B4 und B5 der „Beamer“-Arbeitsmappe einfügen.


Praktische Beispiele

Hier sind einige Beispiele zur Verwendung des Arbeitsblattnamens als Variable:

  1. Verwendung in Formeln:

    =INDIREKT("'[" & $B$4 & "]" & $B$5 & "'!A1")

    Diese Formel liest den Wert aus Zelle A1 des Arbeitsblatts, dessen Name in $B$5 steht.

  2. Makro zur Aktualisierung:

    Sub CopyData()
       Dim sourceSheet As Worksheet
       Set sourceSheet = Workbooks("Bericht.xlsx").Worksheets("Spiel_X")
       ' Kopiere Daten von Spiel_X nach Anzeige
       sourceSheet.Range("A1:A10").Copy Destination:=Workbooks("Beamer.xlsx").Worksheets("Anzeige").Range("A1")
    End Sub

Tipps für Profis

  • Verwende benannte Bereiche: Anstelle von Zellreferenzen kannst Du benannte Bereiche verwenden, um die Formeln übersichtlicher zu gestalten.
  • Automatisiere mit VBA: Nutze VBA, um Prozesse zu automatisieren und den Arbeitsblattnamen dynamisch in Formeln zu integrieren.
  • Fehlerbehandlung einbauen: Achte darauf, Fehlerbehandlung in Deine VBA-Programme einzubauen, um die Benutzerfreundlichkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich den Blattnamen in einer Formel verwenden? Du kannst den Blattnamen mit der INDIREKT-Funktion in einer Formel nutzen, indem Du ihn in einer Zelle speicherst und dann in der Formel darauf verweist.

2. Gibt es eine Möglichkeit, die Verknüpfungen automatisch zu aktualisieren? Ja, indem Du ein VBA-Makro schreibst, das die Zellwerte für den Dateinamen und den Blattnamen aktualisiert, kannst Du die Verknüpfungen automatisch anpassen.

3. Funktioniert dies auch in älteren Excel-Versionen? Die beschriebenen Methoden sollten in Excel 2010 und neueren Versionen gut funktionieren. Bei älteren Versionen können einige Funktionen leicht variieren.

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