AW: Tabellenblattnamen in Makros
12.10.2015 15:38:30
fcs
Hallo Margartete,
1. Heißen meine Tabellenblätter eigentlich immer noch "Tabelle 1" usw. oder aber "Tabelle 1 (BA)" usw oder ist das unwichtig, da der Code einfach mit der 7. Tabelle beginnt? Und hat das mit "intSheet" zu tun?
Deine Blätter heißen wie du es auf den Tabregistern im Excelprorammfenster lesen kannst.
Die index-Zählung beginnt beim linken Tab mit der Nr. 1, dabei werden ausgeblendette Blätter mitgezählt.
"intSheet" ist einfach ein Zähler, der hier in der For-Next-Schleife bei 7 beginnt und beim letzten Blatt endent. Er hat nichts mit den Blattnamen zu tun. Wenn du nur bestimmte Blätter bearbeiten willst, dann kannst du die Namen auch anders prüfen, z.B. ob der Name "(BA)" enthält oder "(IA)"
Intern verwalte Excel die Blätter mit dem sog. Codename.
Wenn du im VBA-Editor den VBA-Projektexplorer anzeigts, dann werden die Blätter in der Reihenfolge der Codenamen gelistet, der Name auf dem Tabregister wird in Klammern angezeigt.
Unter den Eigenschaften der Blätter kannst du den Codenamen -Eigenschaft = (Name)- auch ändern.
2. Lassen wir mal das überspringen von Sheet 13 außer acht. Bei meinem Beispiel möchte ich nur die Blätter 7 bis 25 einbeziehen, nicht aber die Blätter ab Blatt 26 bis Blatt 66. Wenn ich deinen Code richtig verstehe, müsste ich mich im Blatt 25 befinden (ActiveWorkbook), um den Code auszuführen. Ist das korrekt?
Nein. Wenn du die Blätter mit der INDEX-Nr. 7 bis 25 bearbeiten willst, dann muss in der Schleife das Ende des Zählers auf 25 gesetzt werden
For intSheet = 7 to 25
Probiere mal die folgenden Makros. Dann solltes du ein Gefühl bekommen, wie man die Blatt-Bearbeitung steuern kann.
Gruß
Franz
Sub Blattnamen()
Dim intSheet As Integer, wks As Worksheet
For intSheet = 1 To ActiveWorkbook.Worksheets.Count
Set wks = ActiveWorkbook.Worksheets(intSheet)
If MsgBox("Tabellen-Infos:" & vbLf _
& "Index-Nr: " & intSheet & vbLf _
& "Blattname: " & wks.Name & vbLf _
& "Codename: " & wks.CodeName, _
vbOKCancel, "Anzeige von Information zu Tabellen") = vbCancel Then
Exit Sub
End If
Next
End Sub
Sub Blattnamen2()
Dim intSheet As Integer, wks As Worksheet
For intSheet = 1 To ActiveWorkbook.Worksheets.Count
Set wks = ActiveWorkbook.Worksheets(intSheet)
If InStr(wks.Name, "(IA)") > 0 Or InStr(wksName, "(BA)") > 0 Then
If MsgBox("Tabellen-Infos:" & vbLf _
& "Index-Nr: " & intSheet & vbLf _
& "Blattname: " & wks.Name & vbLf _
& "Codename: " & wks.CodeName, _
vbOKCancel, "Anzeige von Information zu Tabellen") = vbCancel Then
Exit For
End If
End If
Next
End Sub