Microsoft Excel

Herbers Excel/VBA-Archiv

Marko für unterschiedliche Tabellenblätter


Betrifft: Marko für unterschiedliche Tabellenblätter von: Fabian
Geschrieben am: 02.10.2019 14:24:13

Hallo,

Ich möchte in einer Arbeitsmappe ein Marko auf unterschiedlichen Tabellenblättern ausführen lassen.
Bis jetzt habe ich keine Beispiele für den Fall gefunden.
Immer nur für Tabellenblätter von x bis y.
Ich benötige aber zum Beispiel Tabelle 1, Tabelle 3, Tabelle 7 & Tabelle 12.

Mein Code der ausgeführt werden soll:

Sub Datumformat_AB()

Range("A56").NumberFormat = "MMM YY"
Range("B56").NumberFormat = "MMM YY"
Range("A56") = Date
Range("A56").Value = DateAdd("m", -1, Range("A56").Value)
Range("B56") = Date

End Sub

Dieser soll auf den oben genannten Beispiel Tabellenblättern ausgeführt werden.
Vielleicht hat ja jemand eine fixe Idee, Danke.

  

Betrifft: AW: Marko für unterschiedliche Tabellenblätter von: Fabian
Geschrieben am: 02.10.2019 14:25:13

Ich meine natürlich Makro :-)


  

Betrifft: AW: Marko für unterschiedliche Tabellenblätter von: EtoPHG
Geschrieben am: 02.10.2019 14:32:54

Hallo,

Je nachdem ob mehr Tabellenblätter aus- oder einzuschliessen sind, wählt man die kleinere Menge als die aus, deren Namen (oder mind. gleichlautende Teile davon) in einem Array (fix) gespeichert werden und schliesst sie dann einem For Each Konstrukt ein- oder aus. Dazu müsste man mehr über dein Vorhaben wissen:
1. Sind es eine fixe Anzahl Blätter oder können neue dazu kommen?
2. Was für Merkmale haben aus- bzw. ein-zuschliessende Blätter?
3. Welche Zellen-Bereiche in diesen Blättern sind von Eigenschaftsmanipulationen betroffen?

Gruess Hansueli


  

Betrifft: AW: Marko für unterschiedliche Tabellenblätter von: Philipp
Geschrieben am: 02.10.2019 14:33:17

Hallo Fabian,

falls ich Dich richtig verstehe, dann reicht es, wenn Du im Visual Basic ein Modul einfügst
oder den Code unter "Diese Arbeitsmappe" ablegst.

Falls Du mit dem Code aus einem anderen Blatt die genannten Blätter ansprechen möchtest,
dann musst Du nur Sheets("Tabelle 1"). vor die jeweiligen Range-Befehle setzen (bzw. den
jeweiligen Namen des Blattes, das Du ansprechen möchtest).

Falls Du den Vorgang für alle Blätter in einer Datei ausführen möchtest, dann kannst
Du das einfach über eine Schleife machen.

Am einfachsten ist es hierbei, die Blätter nach chronologischer Reihenfolge durchzugehen:

Sub Schleife_Blätter()

For i = 1 to activeworkbook.sheets.count step 1

>>> DEIN CODE...

Next i
End Sub
Viele Grüße
Philipp


  

Betrifft: sheets-collection ist oft eine Fehlerquelle... von: EtoPHG
Geschrieben am: 02.10.2019 14:40:32

Philipp,

Weil hier auch alle anderen Blättertypen eingeschlossen sind, also nicht nur Arbeitsblätter.
Darum Hände (Code) weg und lieber ThisWorkbook.WorkSheets als Datenbasis benutzen.

Gruess Hansueli


  

Betrifft: AW: Marko für unterschiedliche Tabellenblätter von: Daniel
Geschrieben am: 02.10.2019 14:35:45

Hi
das Tabellenblatt muss halt vor der jeweiligen Range angegeben werden.
du könntest dir hier mit einer Schleife über zu bearbeitendne Blätter behelfen.
noch ein paar Tips:
- die WITH-Klammer hilft, Code zu kürzen und übersichtlicher zu gestalten.
das bei WITH beschriebene Objekt kann in der Folge durch einen einfachen Punkt ersetzt werden.
- Zellen, die direkt nebeneinander liegen und gleich bearbeitet werden, kann man gemeinsam bearbeiten:

dim TB
for each TB in Array("Tabelle 1", "Tabelle 3", "Tabelle 7" , "Tabelle 12")
    With Sheets("TB")
        .Range("A56:B56").NumberFormat = "MMM YY"
        .Range("B56").Value = Date
        .Range("A56").Value = DateAdd("m", -1, Date)
    end with
next
Gruß Daniel


  

Betrifft: AW: Marko für unterschiedliche Tabellenblätter von: Fabian
Geschrieben am: 02.10.2019 14:53:56

Das sieht doch schon gut aus. Sowas hatte ich mir vorgestellt.
Allerdings bekomme ich, nachdem ich natürlich die Namen meiner Blätter im Code angepasst habe, einen Fehler.

"Index ausserhalb des gültigen Bereichs" in der Zeile "With Sheets("TB")".

Kann das am Namen der Blätter liegen? Vielleicht habe ich da was übersehen.


  

Betrifft: müsste WorkSheets(TB) heissen! (owT) von: EtoPHG
Geschrieben am: 02.10.2019 14:58:14




  

Betrifft: AW: müsste WorkSheets(TB) heissen! (owT) von: Fabian
Geschrieben am: 02.10.2019 15:04:03

Das war der Fehler. Jetzt funktioniert es.
Danke an alle für die schnelle Hilfe.


Beiträge aus dem Excel-Forum zum Thema "Marko für unterschiedliche Tabellenblätter"