Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
408to412
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
408to412
408to412
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Private sub auf allen sheets ausführen

Private sub auf allen sheets ausführen
Dominic
Hallo zusammen
ich habe folgendes Problem. Ich habe ein Private sub in der Arbeitsmappe hinterlegt. Es sieht so aus Private Sub Workbook_Open(.
Das macro wird aber nur auf der ersten Tabelle ausgeführt. Wie kann ich es erreichen dass es beim start auf allen Blättern ausgeführt wird?
Gruss Dominic

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

Betreff
Benutzer
Anzeige
AW: Private sub auf allen sheets ausführen
Bert
Lass mal den Code sehen.
Bert
AW: Private sub auf allen sheets ausführen
Dominic

Sub Workbook_Open()
Anzahl_alt = 1
Anzahl_neu = 0
j = 0
For j = 1 To 2500
Spaltenzahl = Cells(j, Columns.Count).End(xlToLeft).Column
Anzahl_neu = Spaltenzahl
If Anzahl_neu > Anzahl_alt Then
Anzahl_max = Anzahl_neu
Anzahl_alt = Anzahl_neu
Else: Anzahl_max = Anzahl_alt
End If
Next
If Anzahl_max > 20 Then
Anzahl_max = 20
End If
If Anzahl_max > 12 Then
Range(Cells(1, 1), Cells(1, Anzahl_max)).Select
ActiveWindow.Zoom = True
Else: ActiveWindow.Zoom = 100
End If
Cells(1, 1).Select
End Sub

AW: Private sub auf allen sheets ausführen
Bert
Ich sehe in deinem Code keine Variablen- Deklarationen. Du solltest
dir schnellstens angewöhnen, das zu tun, ohne gibts schnell Probleme.
Das Ganze sollte auch ohne select und/oder activate programmiert werden.

Sub Workbook_Open()
For each ws in worksheets
ws.select
Anzahl_alt = 1
Anzahl_neu = 0
j = 0
For j = 1 To 2500
Spaltenzahl = Cells(j, Columns.Count).End(xlToLeft).Column
Anzahl_neu = Spaltenzahl
If Anzahl_neu > Anzahl_alt Then
Anzahl_max = Anzahl_neu
Anzahl_alt = Anzahl_neu
Else: Anzahl_max = Anzahl_alt
End If
Next
If Anzahl_max > 20 Then
Anzahl_max = 20
End If
If Anzahl_max > 12 Then
Range(Cells(1, 1), Cells(1, Anzahl_max)).Select
ActiveWindow.Zoom = True
Else: ActiveWindow.Zoom = 100
End If
Cells(1, 1).Select
next
End Sub

Bert
Anzeige
AW: Private sub auf allen sheets ausführen
Dominic
Vielen Dank jetzt geht es. Ich hatte dir die Deklaration nicht mitgeschickt. Warum sollte man ohne select oder activate Programmieren? Und wie mache ich das denn dann?
Gruss Dominic
AW: Private sub auf allen sheets ausführen
Dominic
Vielen Dank jetzt geht es. Ich hatte dir die Deklaration nicht mitgeschickt. Warum sollte man ohne select oder activate Programmieren? Und wie mache ich das denn dann?
Gruss Dominic
AW: Private sub auf allen sheets ausführen
Andreas
Hallo Bert,
ohne Select und Activate sollte man aus Effizienzgründen programmieren, jeder Select und jedes Activate kostet Rechenzeit und verlangsamt deinen VBA Code. Natürlich kann man das teilweise reduzieren, indem man Application.ScreenUpdating = False setzt, damit werden die Selects und Activates nicht mehr am Schirm angezeigt, brauchen aber trotzdem Rechenzeit. Nun, und wie macht man das mit dem "ohne Select und Activate"? Am einfachsten mit "With", also z.B.
With ActiveWorkbook.Worksheets("Tabelle")
.Range("A1") = "Hallo"
End With
Bingo?
Grüße
Andreas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige