Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
416to420
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
416to420
416to420
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro in allen Tabellenblättern ausführen?

Makro in allen Tabellenblättern ausführen?
peter
Hallo zusammen,
Habe ein Makro gesrieben. Dies soll in allen tabellenblättern augeführt werden ca. 30 Tabellenblätter (varriert). Nachfolgend da Makro:
Sub Name_Tabellenblatt() Range("H4").Select ActiveCell.FormulaR1C1 = "=RIGHT((LEFT(R[-2]C[-2],8)),4)" Range("I4").Select ActiveCell.FormulaR1C1 = "" Range("H4").Select Selection.Copy Range("I4").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Name = ActiveSheet.Range("I4") End Sub
Wie stelle ich das an ?
Danke für Eure Hilfe!!
Gruß
Peter

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro in allen Tabellenblättern ausführen?
Josef
Hallo Peter!
Hier mal zwei möglichkeiten.
Option Explicit

Sub Name_Tabellenblatt_Kompliziert()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Sheets
With wks
.Range("H4").FormulaR1C1 = "=RIGHT((LEFT(R[-2]C[-2],8)),4)"
.Range("I4") = .Range("H4").Value
.Name = .Range("I4")
End With
Next
End Sub

Sub Name_Tabellenblatt_Einfach()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Sheets
wks.Name = Right(Left(wks.[F2], 8), 4)
Next
End Sub

Gruß Sepp
Anzeige
An Sepp
ralle
Hallo Sepp,
erstmal Danke für Deine schnelle Antwort, leider funktioniert es nicht ganz, bekommte einen Laufzeitfehler 1004. Wenn ich debuggen aktiviere, makierte er mir folgendes in gelb: "wks.Name = Right(Left(wks.[F2], 8), 4)"
Woran kan es liegen ?
Gruß
ralle
AW: An Sepp
Josef
Hallo Ralle (Peter?)
Dann ist wohl in mindestens einem der Blätter die Zelle "F2" leer !
Den Fehler kannst du so abfangen.
If wks.[F2] "" Then
wks.Name = Right(Left(wks.[F2], 8), 4)
End If
Gruß Sepp
AW: An Sepp
ralle
... ja ralle = peter!! sorry!!!
ich bin wohl zu blöd für diese Sache, kenne mich aber auch nicht wirklich gut mit VBA aus. Frage: Kann ich mein Makro einfach durch Dein Makro ersetzen oder wie muß das Makro laufen?
Zur Info, dass Makro muß in jedem Tabellenblatt neu gestartet werden, da sich in der Zelle F2 immer ein anderer Wert befindet. Der Name für das Tabellenblatt befindet nach durchlauf des Makros in der Zelle I5.
Hoffe Du kannst und wilst mir noch helfen, auch wenn ich mich so dumm anstelle!!
Gruß
ralle
Anzeige
AW: An Sepp
Josef
Hallo Peter!
Da hab ich dich wohl falsch verstanden!
Ich dachte, du möchtest in einem Durchlauf
alle Tabellenblätter umbenennen.
Also du willst immer das aktive Tabellenblatt
abhängig vom Wert in "F2" umbenennen.
Wenn du den Namen des Tabellenblattes auch in
"I4" benötigst, dann verwende diesen Code.

Sub Name_Tabellenblatt()
With ActiveSheet
.[I4] = Right(Left(.[F2], 8), 4) 'macht das selbe wie deine Formel
.Name = .[I4]
End With
End Sub

Brauchst du nur den Namen der Tabelle, dann
genügt folgender Code.

Sub Name_Tabellenblatt2()
ActiveSheet.Name = Right(Left([F2], 8), 4)
End Sub

Gruß Sepp
Anzeige
AW: An Sepp
ralle
Hallo sepp
dass klappt mit Deinem Makro wunderbar

Sub Name_Tabellenblatt()
With ActiveSheet
.[I4] = Right(Left(.[F2], 8), 4) 'macht das selbe wie deine Formel
.Name = .[I4]
End With
End Sub

, aber ich möchte nun in einem Durchlauf alle Tabellenblätter umbenen in abhängigkeit vom Wert "F2". Dabei ist die Anzahl der Tabellenblätter variabel.
Gruß
ralle
PS: Danke für Deine Hilfe bis jetzt, ist ja nicht selbstverständlich!!
AW: An Sepp
Josef
Guten Morgen Peter!
Genau das machen eigentlich die ersten Makros die
ich gepostet habe!
Nimm diesen Code.

Sub Name_Tabellenblatt_Alle()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Sheets
With wks
If .[F2] <> "" Then
'prüfen ob in "F2" ein Wert enthalten,
'sonst kommt es zu einem Laufzeitfehler!
.[I4] = Right(Left(.[F2], 8), 4)
.Name = .[I4]
End If
End With
Next
End Sub

Gruß Sepp
Anzeige
AW: An Sepp
ralle
... entschuldige, dass ich nochmal belästigen muss. Habe jetzt folgendes im Makro stehen:

Sub Name_Tabellenblatt_Alle()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Sheets
With wks
If .[F2] <> "" Then
'prüfen ob in "F2" ein Wert enthalten,
'sonst kommt es zu einem Laufzeitfehler!
.[I4] = Right(Left(.[F2], 8), 4)
.Name = .[I4]
End If
End With
Next
End Sub

Wenn ich dieses Makro ausführe passiert jetzt gar nichts. Woran liegt das, habe ich etwas vergessen ?
Gruß
ralle
Es funktioniert !!!
21.04.2004 09:45:52
ralle
Hallo Sepp,
Danke für Deine Mithilfe, habe jetzt endlich das passende Makro gefunden:

Sub KST()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
With wks
.[I4] = Right(Left(.[F2], 8), 4) 'macht das selbe wie deine Formel
.Name = .[I4]
End With
Next
End Sub

Wünsche Dir noch einen schönen Tag !!
Gruß
ralle
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige