Arbeitsblattname in eine Zelle übernehmen
Hallo,
ich arbeite gerade an einer Arbeitsmappe wo die Zelle A1 und der Blattnme identisch sind. Kann ich das mit einer Formel (VBA???) lösen das der Automatisch in die Zelle A1 geschrieben wird??
ich arbeite gerade an einer Arbeitsmappe wo die Zelle A1 und der Blattnme identisch sind. Kann ich das mit einer Formel (VBA???) lösen das der Automatisch in die Zelle A1 geschrieben wird??
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 47469
Url: https://administrator.de/contentid/47469
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
14 Kommentare
Neuester Kommentar
Hi,
im Makro würde die Zeile so aussehen:
[Edit:
Für die ganze Mappe in einem Ritt:
/Edit]
Psycho
im Makro würde die Zeile so aussehen:
Cells(1, 1).Value = ActiveSheet.Name
[Edit:
Für die ganze Mappe in einem Ritt:
Sub Blattnamen()
Dim i As Integer
For i = 1 To Sheets.Count
Sheets(i).Cells(1, 1).Value = Sheets(i).Name
Next i
End Sub
Psycho
Moin frost3006,
Du kannst natürlich selbst eine Funktion "Arbeitsblatt()" definieren, wenn es Sinn macht.
Weg: Über Excel->Extras->Makros->VisualBasic-Editor-> Einfügen->Modul-> dann diesen Schnipsel hineinkopieren:
Dann steht Dir in Excel eine "eigene" Makro-Funktion "Arbeitsblatt()" [oder "BlattName()" oder welcher Name Dir sinnvoll erscheint] zur Verfügung.
Gruß
Biber
Du kannst natürlich selbst eine Funktion "Arbeitsblatt()" definieren, wenn es Sinn macht.
Weg: Über Excel->Extras->Makros->VisualBasic-Editor-> Einfügen->Modul-> dann diesen Schnipsel hineinkopieren:
Public Function Arbeitsblatt(Optional ShietIndex As Long) As String
If ShietIndex = 0 Or ShietIndex > Sheets.Count Then
Arbeitsblatt = ActiveSheet.Name
Else
Arbeitsblatt = Sheets(ShietIndex).Name
End If
End Function
Dann steht Dir in Excel eine "eigene" Makro-Funktion "Arbeitsblatt()" [oder "BlattName()" oder welcher Name Dir sinnvoll erscheint] zur Verfügung.
Gruß
Biber
@Biber
Hast Du da nicht ein "e" zuviel bei "ShietIndex"?
Sollte doch wohl "ShietIndx" heißen ...
Und noch was - sollte man/frau nicht auch den Blattnamen (statt nur diesen Wie-auch-immer-Indx) als Argument übergeben können?
Grüße
bastla
Hast Du da nicht ein "e" zuviel bei "ShietIndex"?
Sollte doch wohl "ShietIndx" heißen ...
Und noch was - sollte man/frau nicht auch den Blattnamen (statt nur diesen Wie-auch-immer-Indx) als Argument übergeben können?
Grüße
bastla
@bastla
Okay, okay, manchmal schlägt eben der Bremer Dialekt ein büschen durch... aber das ist bei geTuemII mit ihren "feuchten Ohrtipps" ja auch so...
Das wäre ja dann so sinnvoll wie eine Funktion GetNachname("Müller") ...so was wird bestimmt bei M$ ohnehin standardmäßig mit ausgeliefert.
Grüße
Biber
Okay, okay, manchmal schlägt eben der Bremer Dialekt ein büschen durch... aber das ist bei geTuemII mit ihren "feuchten Ohrtipps" ja auch so...
sollte man/frau nicht auch den Blattnamen ...als Parameter übergeben können..?
Das wäre ja dann so sinnvoll wie eine Funktion GetNachname("Müller") ...so was wird bestimmt bei M$ ohnehin standardmäßig mit ausgeliefert.
Grüße
Biber
@Biber
Nur zur Sicherheit habe ich oben noch 2 dazugegeben - man/frau weiß ja nie, wer hier noch so alles mitliest ...
Grüße
bastla
Nur zur Sicherheit habe ich oben noch 2 dazugegeben - man/frau weiß ja nie, wer hier noch so alles mitliest ...
Grüße
bastla
@bastla
Ich glaube, einige würden es ohne Smilies gar nicht mitbekommen,
wenn meine Funktion GetNachname("Müller") den Wert "Hansi" zurückgibt...
Vorhin war einer da, der hat "passsword" so geschrieben wie ich eben...
...hoffentlich war das nun endlich der absolute Tiefpunkt...
Oder kommt es nächstes Jahr noch schlimmer? *seufz*
Schönen Abend jedenfalls
Biber
man/frau weiß ja nie, wer hier noch so alles mitliest ...
Ja, besser is' das...Ich glaube, einige würden es ohne Smilies gar nicht mitbekommen,
wenn meine Funktion GetNachname("Müller") den Wert "Hansi" zurückgibt...
Vorhin war einer da, der hat "passsword" so geschrieben wie ich eben...
...hoffentlich war das nun endlich der absolute Tiefpunkt...
Oder kommt es nächstes Jahr noch schlimmer? *seufz*
Schönen Abend jedenfalls
Biber
Hallo frost3006!
Es geht also nur darum, einzelne Blätter auszusparen - dann im Prinzip weiter mit Deinem Makro:
Grüße
bastla
Es geht also nur darum, einzelne Blätter auszusparen - dann im Prinzip weiter mit Deinem Makro:
Sub Aktualisieren()
' Tastenkombination: Strg+r
Dim i As Integer
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Stammdaten" And Sheets(i).Name <> "Muster" Then
Sheets("Muster").Cells.Copy
Sheets(i).Select
Cells.Select
ActiveSheet.Paste
Range("B2").Select
End If
Next i
Application.CutCopyMode = False
End Sub
Grüße
bastla
Hallo frost3006!
Einen Nachtrag muss ich noch anbringen: Die verwendete Zählschleife ("For i ...") ist IMHO nur die zweitbeste Lösung - in ähnlichen Situationen solltest Du eher mit "For Each ..." alle passenden (in diesem Fall: Tabellen-) Blätter durchgehen:
Vorteilhaft ist hier, dass auch in der Mappe befindliche Diagrammblätter nicht stören, da sie in der "Worksheets()"-Auflistung nicht vorkommen, sehr wohl aber in der vorigen Lösung berücksichtigt werden müssten (durch Überprüfung des "Type").
Grüße
bastla
Einen Nachtrag muss ich noch anbringen: Die verwendete Zählschleife ("For i ...") ist IMHO nur die zweitbeste Lösung - in ähnlichen Situationen solltest Du eher mit "For Each ..." alle passenden (in diesem Fall: Tabellen-) Blätter durchgehen:
Sub Aktualisieren2()
Dim oBlatt As Object
For Each oBlatt In Worksheets()
If oBlatt.Name <> "Stammdaten" And oBlatt.Name <> "Muster" Then
Sheets("Muster").Cells.Copy
oBlatt.Select
Cells.Select
ActiveSheet.Paste
Range("B2").Select
End If
Next
Application.CutCopyMode = False
End Sub
Grüße
bastla