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