Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro nur auf bestimme Tabellen ausführen

Makro nur auf bestimme Tabellen ausführen
15.07.2013 13:43:24
Max
Hallo,
ich bin gerade irgendwie am verzweifeln. Ich weiß, dass es schon 1001 Vorredner zu diesem Thema gibt, aber ich habe das entweder nicht so umsetzen können oder die Hilfe bezog sich auf alle Blätter. Mein Ziel ist es, dass das Makro auf allen Sheets außer dem Ersten ausgeführt wird. Leider führt er es aber nur auf dem 2. aus.
Seht ihr in dem Code einen Fehler?
https://www.herber.de/bbs/user/86372.xlsm
Vielen Dank!
Max

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro nur auf bestimme Tabellen ausführen
15.07.2013 14:04:54
Klaus
Hi Max,
Sub TabellenBearbeiten()
Dim ws As Worksheet
For Each ws In Worksheets
'If ws.Index 
Grüße,
Klaus M.vdT.

AW: Makro nur auf bestimme Tabellen ausführen
15.07.2013 14:16:47
Max
Das hätte funktioniert, wenn ich nicht zu retadiert hierfür gewesen wäre:
 'If ws.Index  Then
Danke für deine Mühen.
Max

Anzeige
AW: Makro nur auf bestimme Tabellen ausführen
15.07.2013 14:05:21
ransi
Hallo MAx
Versuch mal sowas:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub TabellenBearbeiten()
Dim ws As Worksheet
For Each ws In Worksheets
    If Not ws Is Tabelle8 Then
        Date_Converting ws
    End If
Next
End Sub



Sub Date_Converting(myWs As Worksheet)
Dim arr, arrTmp, i As Long
On Error Resume Next
With myWs
    arr = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
    For i = 1 To UBound(arr)
        arrTmp = Split(arr(i, 1), " ")
        arr(i, 1) = CDate(Join(Array(Replace(arrTmp(0), ",", ""), arrTmp(1), arrTmp(2)), " "))
    Next
    .Cells(2, 1).Resize(UBound(arr)) = arr
End With
End Sub


ransi

Anzeige
AW: Makro nur auf bestimme Tabellen ausführen
15.07.2013 14:12:34
Max
Hey Ransi,
prima, vielen Dank! Übersteigt zwar meine Kompetenzen, aber man kann ja (noch) nicht alles wissen.
Gruß Max

AW: Makro nur auf bestimme Tabellen ausführen
15.07.2013 14:07:15
Rudi
Hallo,
Leider führt er es aber nur auf dem 2. aus.
Nö. Auf 1 und 2
Seht ihr in dem Code einen Fehler?
Ja.
If ws.Index Muss doch wohl > 1 sein.
Gruß
Rudi

Anzeige
AW: Makro nur auf bestimme Tabellen ausführen
15.07.2013 14:14:01
Max
Hey Rudi,
danke, ja da hast du natürlich Recht. Da habe ich den Wald vor lauter Bäumen nicht mehr gesehen.
Gruß Max
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro nur auf bestimmte Tabellen ausführen


Schritt-für-Schritt-Anleitung

Um ein Makro nur auf bestimmten Tabellen in Excel auszuführen, kannst du folgenden VBA-Code verwenden. In diesem Beispiel wird das Makro auf alle Blätter außer dem ersten Sheet ausgeführt.

Sub TabellenBearbeiten()
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Index > 1 Then
            ' Hier kannst du deine Funktion aufrufen
            Date_Converting ws
        End If
    Next ws
End Sub

Sub Date_Converting(myWs As Worksheet)
    Dim arr, arrTmp, i As Long
    On Error Resume Next
    With myWs
        arr = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
        For i = 1 To UBound(arr)
            arrTmp = Split(arr(i, 1), " ")
            arr(i, 1) = CDate(Join(Array(Replace(arrTmp(0), ",", ""), arrTmp(1), arrTmp(2)), " "))
        Next
        .Cells(2, 1).Resize(UBound(arr)) = arr
    End With
End Sub

Häufige Fehler und Lösungen

Ein häufiger Fehler, den Benutzer erleben, ist, dass das Makro nicht auf die erwarteten Tabellen angewendet wird. In der ursprünglichen Anfrage von Max wurde das Makro nur auf das zweite Blatt angewendet. Die Lösung war, die Bedingung im If-Statement zu ändern:

If ws.Index > 1 Then

Stelle sicher, dass du die Indexnummern korrekt angibst, um die gewünschten Blätter auszuschließen oder einzuschließen.


Alternative Methoden

Falls du eine alternative Methode suchst, um das Makro nur auf bestimmte Tabellen auszuführen, kannst du auch explizit die Namen der Blätter angeben. Hier ein Beispiel:

Sub TabellenBearbeiten()
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Name <> "Tabelle1" Then
            Date_Converting ws
        End If
    Next ws
End Sub

Diese Methode ist nützlich, wenn die Blätter nicht nach Index nummeriert sind oder du eine genauere Kontrolle benötigst.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du das Makro in einer Excel-Version (z.B. Excel 2016) implementieren kannst:

  1. Öffne den VBA-Editor mit Alt + F11.
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul").
  3. Kopiere den oben genannten Code in das Modul.
  4. Schließe den Editor und führe das Makro mit Alt + F8 aus.

Das Makro wird nun auf alle Blätter außer dem ersten Blatt angewendet.


Tipps für Profis

  • Nutze die On Error Resume Next-Anweisung, um Fehler während der Ausführung des Makros zu ignorieren. Dies kann nützlich sein, wenn du mit unvollständigen Daten arbeitest.
  • Vermeide es, das Makro auf große Datenmengen auszuführen, um die Performance zu optimieren. Überlege, ob du die Schleifen optimieren oder nur bestimmte Bereiche ansteuern kannst.
  • Teste dein Makro immer mit einer Kopie deiner Arbeitsmappe, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Warum funktioniert mein Makro nicht auf allen Blättern? Es könnte sein, dass die Index-Bedingung im If-Statement nicht korrekt ist. Stelle sicher, dass du die richtigen Indexwerte verwendest.

2. Wie kann ich das Makro auf bestimmte Blattnamen anwenden? Du kannst die If-Bedingung so anpassen, dass sie auf die Namen der Blätter prüft, anstatt auf die Indexnummern. Dies gibt dir eine präzisere Kontrolle.

3. Welche Excel-Version benötige ich für dieses Makro? Das Beispiel funktioniert in Excel-Versionen, die VBA unterstützen, wie Excel 2013, 2016 und neuer.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige