frost3006
Goto Top

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??

Content-Key: 47469

Url: https://administrator.de/contentid/47469

Printed on: April 16, 2024 at 18:04 o'clock

Mitglied: 8644
8644 Dec 27, 2006 at 13:47:34 (UTC)
Goto Top
Hi,

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
/Edit]

Psycho
Member: frost3006
frost3006 Dec 28, 2006 at 08:25:34 (UTC)
Goto Top
vielen dank klapt super

Nur kann cih das auch in eine Funktion einbauen??
Member: Biber
Biber Dec 28, 2006 at 13:48:52 (UTC)
Goto Top
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:

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
Member: bastla
bastla Dec 28, 2006 at 20:26:22 (UTC)
Goto Top
@Biber

Hast Du da nicht ein "e" zuviel bei "ShietIndex"?
Sollte doch wohl "ShietIndx" heißen ... face-big-smile

Und noch was - sollte man/frau nicht auch den Blattnamen (statt nur diesen Wie-auch-immer-Indx) als Argument übergeben können? face-winkface-winkface-wink

Grüße
bastla
Member: Biber
Biber Dec 28, 2006 at 21:17:22 (UTC)
Goto Top
@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...

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
Member: bastla
bastla Dec 28, 2006 at 21:28:42 (UTC)
Goto Top
@Biber

Nur zur Sicherheit habe ich oben noch 2 face-wink dazugegeben - man/frau weiß ja nie, wer hier noch so alles mitliest ...

Grüße
bastla
Member: Biber
Biber Dec 28, 2006 at 21:53:57 (UTC)
Goto Top
@bastla
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
Member: frost3006
frost3006 Dec 29, 2006 at 07:26:02 (UTC)
Goto Top
vielen dank habt mir sehr geholfen
Member: frost3006
frost3006 Jan 03, 2007 at 09:02:59 (UTC)
Goto Top
Hab mal ein wenig weiter geschrieben nur häng ich wieder und zwar hab ich ein Aktualisierung Makro erstellt das mir ein bestimmtes Arbeitsblatt in diesem Falle Tabelle2 "Muster" Tabelle1 soll von dieser Aktualisierung ebenfalls unberührt lasse. Was bis jetzt klappt ist das er alle Tabellen Aktualisiert jetzt hab ich ein wenig umgespielt nur leider kein Ergebnis erreicht.

Sub Aktualisieren()
' Tastenkombination: Strg+r
Dim i As Integer
For i = 1 To Sheets.Count
Sheets("Muster").Select
Cells.Select
Range("A2").Activate
Selection.Copy
Sheets(i).Select
Cells.Select
ActiveSheet.Paste
Range("B2").Select
Next i
End Sub

Das ist mein Momentaner Stand ich habe schon versucht einen bestimmten Bereich anzugeben nur klappt dies nicht und es kann sein das sic die Tabellen anzahl noch erhöhen kann.

Hoffe das kommt verständlich rüber
Member: bastla
bastla Jan 03, 2007 at 09:49:54 (UTC)
Goto Top
Hallo frost3006!
Hoffe das kommt verständlich rüber
Leider nein face-sad

Dein Code sieht so aus, als wolltest Du aus der Tabelle "Muster" die Zelle "A2" in alle Tabellen kopieren - richtig?

Grüße
bastla
Member: frost3006
frost3006 Jan 03, 2007 at 10:30:14 (UTC)
Goto Top
er kopiert das gesamte Blatt warum er da jetzt die A2 drin hatt keine Ahnung die ist mit dem Makro Rekorder Teilweise erstellt die Prozedur

Also was bei rauskommen soll ist das Alles von Muster in die anderen Tabellen kopiert werden soll ausgenommen das Blatt Stammdaten (ist die erste Tabelle, Muster die 2te)
Member: bastla
bastla Jan 03, 2007 at 11:01:42 (UTC)
Goto Top
Hallo frost3006!

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
Member: frost3006
frost3006 Jan 03, 2007 at 11:11:58 (UTC)
Goto Top
vielen dank
Member: bastla
bastla Jan 03, 2007 at 15:42:20 (UTC)
Goto Top
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:
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
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