Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1536to1540
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
Inhaltsverzeichnis

WG: Indizierung Tabellenblätter

WG: Indizierung Tabellenblätter
07.02.2017 10:42:13
Klaus
Hallo zusammen,
habe folgendes Problem. Beim einfügen von neuen Tabellenblättern ändert sich der Index. Dadurch kann ich die Blätter nicht mehr geziehlt ansprechen. Anbei hänge ich einen Screenshot aus dem man entnehmen kann, dass die Reihenfolge verkehrt ist, obwohl ich den Blättern wieder den richtigen Namen gegeben habe, sprich "Tabelle 1, Tabelle 2 usw." Wie kann ich wieder die richtige Reihenfolge herstellen?
Userbild

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: WG: Indizierung Tabellenblätter
07.02.2017 10:53:55
 Matthias
Hallo
Dann müsstest Du bei den Tabellen 1-9 je eine 0 vor die Zahl setzen (beim CodeNamen)
Tabelle01
Tabelle02
...
Nach Text sortiert ist es ja korrekt.
Gruß Matthias
AW: WG: Indizierung Tabellenblätter
07.02.2017 11:08:15
Klaus
Hallo Matthias vielen Dank für deine Hilfe. Nun ist die Reihenfolge korrekt lt. Liste siehe Screenshot.
Mein Makro soll dazu dienen die Kopf- und Fußzeilen automatisch anzupassen. Das funktioniert auch eigentlich hervorragend. Das Problemm ist, dass bei Tabelle 10 die Kopfzeile geändert wird, obwohl im Code nur Änderungen in der Fußzeile vorgenommen werden sollen! Kann hier jemand den Fehler im Code entdecken oder mir einen Tipp geben die Blätter gezielter anzusprechen? Vielen lieben Dank vorab! Angehängt der Code:
Sub Aktualisierung()
Dim Tabellenblatt As Worksheet
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 2 Then
With Tabellenblatt.PageSetup
.LeftFooter = "&""Arial,Standart""&7" & Chr(10) & Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "&""Arial,Standart""&7" & "Seite &P"
.RightFooter = ""
End With
End If
Next
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 3 Then
With Tabellenblatt.PageSetup
.LeftFooter = "&""Arial,Standart""&7" & Chr(10) & Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "&""Arial,Standart""&7" & "Seite &P"
.RightFooter = ""
End With
End If
Next
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 4 Then
With Tabellenblatt.PageSetup
.LeftFooter = "&""Arial,Standart""&7" & Chr(10) & Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "&""Arial,Standart""&7" & "Seite &P"
.RightFooter = ""
End With
End If
Next
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 5 Then
With Tabellenblatt.PageSetup
.LeftFooter = "&""Arial,Standart""&7" & Chr(10) & Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "&""Arial,Standart""&7" & "Seite &P"
.RightFooter = ""
End With
End If
Next
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 6 Then
With Tabellenblatt.PageSetup
.LeftFooter = "&""Arial,Standart""&7" & Chr(10) & Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "&""Arial,Standart""&7" & "Seite &P"
.RightFooter = ""
End With
End If
Next
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 7 Then
With Tabellenblatt.PageSetup
.LeftFooter = "&""Arial,Standart""&7" & Chr(10) & Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "&""Arial,Standart""&7" & "Seite &P"
.RightFooter = ""
End With
End If
Next
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 8 Then
With Tabellenblatt.PageSetup
.LeftFooter = "&""Arial,Standart""&7" & Chr(10) & Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "&""Arial,Standart""&7" & "Seite &P"
.RightFooter = ""
End With
End If
Next
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 9 Then
With Tabellenblatt.PageSetup
.LeftHeader = "&""Arial,Bold""&12" & Chr(10) & Chr(10) & Worksheets("Kundenübersicht").Range(" _
C4") & Chr(10) & Worksheets("Kundenübersicht").Range("C5") & Chr(10) & Worksheets("Kundenübersicht").Range("C6")
.CenterHeader = "&G" & "&""Arial,Bold""&10" & Chr(10) & Chr(10) & ("Versicherungswert der  _
Betriebseinrichtung (F/EC)")
.RightHeader = "&""Arial,Bold""&12" & Chr(10) & Chr(10) & Chr(10) & Worksheets("Kundenübersicht" _
).Range("C10") & " " & Worksheets("Kundenübersicht").Range("D10")
.LeftFooter = Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "Seite &P"
.RightFooter = ""
End With
End If
Next
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 10 Then
With Tabellenblatt.PageSetup
.LeftFooter = "&""Arial,Standart""&7" & Chr(10) & Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "&""Arial,Standart""&7" & "Seite &P"
.RightFooter = ""
End With
End If
Next
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= 11 Then
With Tabellenblatt.PageSetup
.LeftHeader = "&""Arial,Bold""&12" & Chr(10) & Chr(10) & Worksheets("Kundenübersicht").Range(" _
C4") & Chr(10) & Worksheets("Kundenübersicht").Range("C5") & Chr(10) & Worksheets("Kundenübersicht").Range("C6")
.CenterHeader = "&G" & "&""Arial,Bold""&10" & Chr(10) & Chr(10) & ("Versicherungswert für  _
Elektronikversicherung")
.RightHeader = "&""Arial,Bold""&12" & Chr(10) & Chr(10) & Chr(10) & Worksheets("Kundenübersicht" _
).Range("C10") & " " & Worksheets("Kundenübersicht").Range("D10")
.LeftFooter = Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "Seite &P"
.RightFooter = ""
End With
End If
Next
MsgBox "Die Aktualisierung wurde erfolgreich durchgeführt !"
End Sub
Userbild
Anzeige
nur mal auf den ersten Blick ... ungetestet
07.02.2017 11:23:42
 Matthias
Hallo
Schau mal ob diese Verkürzung funktioniert.
Dim Tabellenblatt As Worksheet, BlattIndex&
For BlattIndex = 2 To 11
For Each Tabellenblatt In ActiveWorkbook.Worksheets
If Tabellenblatt.Index >= BlattIndex Then
With Tabellenblatt.PageSetup
.LeftFooter = "&""Arial,Standart""&7" & Chr(10) & Worksheets("Kundenübersicht").Range("O10")
.CenterFooter = "&""Arial,Standart""&7" & "Seite &P"
.RightFooter = ""
End With
End If
Next
Next
dann brauchst Du nicht soviele Codezeilen. Ich hoffe ich hab da nichts übersehen.
Ich lass mal offen (wg. der Kopf/Fußzeile).
Ich muss jetzt weg, sorry.
Gruß Matthias
Anzeige
Gegenfrage: Ist 10 >=9 ? (owT)
07.02.2017 12:09:27
EtoPHG

AW: WG: Indizierung Tabellenblätter
07.02.2017 12:08:58
Daniel
Hi
der Index der Tabellenblätter richtet sich nach der Anordnung der Reiter.
dh das Blatt des linken Reites hat immer den Index 1.
Da du diese Reihenfolge und damit den Index einfach durch Verschieben ändern kannst, ist die Indexnummer unabhängig von der Benennung, sowohl vom Codenamen (vor der Klammer) als auch "normalen" Namen (in der Klammer)
Gruß Daniel
AW: WG: Indizierung Tabellenblätter
07.02.2017 12:42:00
Klaus
Ok vielen Dank. Wie kann ich denn den Index verändern?
AW: WG: Indizierung Tabellenblätter
07.02.2017 12:49:17
Daniel
schrieb ich doch, in dem du die Reiter der Tabellenblätter in die Richtige Reihenfolge bringst.
in VBA gibst dafür den Befehl MOVE.
Gruß Daniel
Anzeige
AW: WG: Indizierung Tabellenblätter
07.02.2017 12:53:48
Klaus
Ok super. Könntest du mir vielleicht einen Beispielcode geben mit dem ich meine Blätter wieder in die richtige Reihenfolge bringen kann?
AW: WG: Indizierung Tabellenblätter
07.02.2017 12:58:50
Klaus
Kurze Info. In meinem jetzigen Blatt 10 werden die Änderungen durchgeführt die eigentlich nur in Blatt 9 passieren sollen.
AW: WG: Indizierung Tabellenblätter
07.02.2017 18:32:05
 Matthias
Hallo
Mal etwas anders erklärt ...
Das sind 3 Paar Schuhe
BlattIndex
CodeName
RegisterblattName
Wenn Du also über den BlattIndex gehst sprichst Du die Namen in deren Reihenfolge an
wie Du sie am unteren Bilschirmrand siehst.


Du kannst aber genauso bspw. den
CodeNamen: If Worksheets(Index).CodeName="Tabelle02" ...
oder den
RegisterBlattNamen: If Worksheets(Index).Name="BE 2016" ...
im Code benutzen.
Diese beiden müssen nicht identisch sein!


Deine Ausgangsfrage bezog sich ja aber auf die sortierte Darstellung im VBA-Projektexplorer.
Das wäre jetzt das 4. Paar Schuhe ;-)
Welches ist denn Dein jetztiges Blatt 10?


So findest Du es heraus:
Markiere Das entsprechende Blatt
und starte diese Code (nur mal zum Verstehen)
MsgBox ActiveSheet.Index, vbInformation, "Index"
MsgBox ActiveSheet.CodeName, vbInformation, "CodeName"
MsgBox ActiveSheet.Name, vbInformation, "Name"
Gruß Matthias
Anzeige
AW: WG: Indizierung Tabellenblätter
07.02.2017 12:59:44
Daniel
Hi
mit dem Befehl MOVE kannst du die Blätter an bestimmte Stellen schieben.
Welches die richtige Position ist, weißt du besser als ich.
Du kannst dir in der Hilfe weitere Infos holen.
Du kannst den Befehl mit dem Recorder aufzeichnen.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige