Anzeige
Archiv - Navigation
1372to1376
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

Alle blaetter / WorkSheets per vba aktualisieren

Alle blaetter / WorkSheets per vba aktualisieren
11.08.2014 14:21:22
Andreas
Hallo,
So nachdem das mit dem Drucken super klappt, habe ich hierzu noch einmal eine andere Frage.
Ich habe diese Arbeitsmappe gefunden die genau macht, was ich will.
https://www.herber.de/bbs/user/92016.xls
Ich wuerde hier nun gerne alle WorkSheets ausser 'Daten' ausblenden.
Da ich nun die ausgeblendeten Sheet nicht auswaehlen kann, werden diese nicht aktualisiert.
Es werden sehr viele Blaetter und ich wuerde die gerne mit einem Knopf alle aktualisieren.
Ich habe mit einem Button und Makro bei eingeblendeten Sheets das hier versucht
Dim sh As Worksheet
For Each sh In ActiveWorkbook.WorkSheets
sh.Calculate
Next sh
Leider funktioniert das nicht.
Gibt es eine Moeglichkeit, alle x Sheets aufeinmal per vba zu aktualisieren?
Und wie wuerde das funktionieren, wenn diese sheets ausgeblendet sind? Erst einblenden lassen und dann sofort wieder ausblenden, oder funktioniert das auch wenn ausgeblendet ist?
Ich hoffe ich druecke mich klar aus.
Noch einmal vielen lieben Dank fuer alle Tipps und Hilfe,
Andreas

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle blaetter / WorkSheets per vba aktualisieren
11.08.2014 14:45:28
Werner
Hallo Andreas,
Versuch mal
dim sh as worksheet
for each sh in worksheets
with sh
sh.calculate
end with
next
in ein allgemeines Modul und auf den Button legen.
Gruß Werner

AW: Alle blaetter / WorkSheets per vba aktualisieren
11.08.2014 14:57:22
Andreas
Hallo Werner,
Danke fuer Deine Hilfe.
Ich habe den Code von dir in eine Button Funktion innerhalb einer UserForm und in ein Modul2 unter allgemein gelegt. Dieses wird auch durch einen Button direkt aus der Tabelle angesprochen.
Leider scheint es nicht zu funktionieren.
Ich hoffe, dass ich nicht falsch mache.

AW: Alle blaetter / WorkSheets per vba aktualisieren
11.08.2014 15:10:47
Andreas
Kann es sein, dass worksheet.calculate nicht funktioniert, weil die das Fuellen der Blaeter ueber Funktionen, welche in der Arbeitsmappe definiert sind, realisiert ist?
Code der Arbeitsmappe:

Option Explicit
Private Sub Workbook_SheetActivate(ByVal sh As Object)
If Range("DataStart").Parent.Name  sh.Name Then
Dim rngCrit As Range
On Error Resume Next
Set rngCrit = sh.Range("DataCrit")
On Error GoTo 0
If Not rngCrit Is Nothing Then
Filter sh
End If
End If
ErrorHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
If Range("DataStart").Parent.Name  sh.Name Then
Dim rngAct  As Range
Set rngAct = ActiveCell
On Error GoTo ErrorHandler
Set Target = Intersect(Target, sh.Range(sh.Range("DataCrit").Row & ":" & sh.Range(" _
DataGoal").Row - 1).EntireRow)
If Not Target Is Nothing Then
Filter sh
Application.GoTo rngAct
End If
End If
ErrorHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub Filter(sh As Object)
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim lngRows     As Long
Dim rngGoalData As Range
With sh
lngRows = .Range(.Range("DataCrit").Row & ":" & .Range("DataGoal").Row - 1). _
Find(What:="*", _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set rngGoalData = .Range("DataGoal").CurrentRegion
If rngGoalData(1, 1).Row 
Und wenn das so ist, wie kann ich aktualisieren, ohne jedes Blatt einzeln anklicken zu muessen?

Anzeige
AW: Alle blaetter / WorkSheets per vba aktualisieren
11.08.2014 15:14:19
Werner
Hallo Andreas,
versuch es mal mit woksheets.count
dim x as long
x = 1 to worksheets.count
With worksheets(x)
worksheets(x).calculate
end with
next
Werner

AW: Alle blaetter / WorkSheets per vba aktualisieren
11.08.2014 15:20:43
Andreas
Ich habe einen Syntaxfehler vom Compiler erhalten.

x = 1 to worksheets.count
Ich habe daraus dann

For x = 1 to worksheets.count
gemacht.
Leider ohne Erfolg.

with ist überflüssig
11.08.2014 16:16:36
Matthias
Hi
Für was soll denn das
With worksheets(x)
gut sein?
Gruß Matthias

Anzeige
AW: with ist überflüssig
11.08.2014 16:48:00
Andreas
Hallo Mathias,
ich habe leider keine Ahnung.
Ich versuche nur krampfhaft das Ereignis, welches beim Wechseln von einem zum anderen Blat ausgeloest wird, manuell auszuloesen.
Ich hatte die calculate (Methode?) versucht, aber das scheint nicht zu funktionieren, weil, wie ich denke, die Blaeter selber keine Formeln oder Funktionen haben.
Ich denke beim Wechseln zwischen den Arbeitsblaettern wird ein Event ausgeloest was zu der Aktualisierung fuehrt. Ich haette dieses Akualisieren jetyzt gerne auch manuell ausgeloest.
Ich weiss leider nur nicht weiter.

Dafür gibt's doch Tasten...!? Gruß owT
11.08.2014 16:52:25
Luc:-?
:-?

Anzeige
AW: Dafür gibt's doch Tasten...!? Gruß owT
11.08.2014 18:06:05
Andreas
Ich beziehe jetzt auf deinen Betreff Luc:-?
Wofuer gibt es Tasten, wo sind die und koennen die wirklich aus einer UserForm alle Sheets auf einmal aktualisieren?

klar gibts dafür Tasten...!
11.08.2014 18:22:30
Matthias
Hi
Wofuer gibt es Tasten
Na z.B. zum Aktualisieren die Taste F9, dadurch wird eine Neuberechnung ausgelöst.
Soll heißen wenn Du es manuell machen willst, irgend ein Blatt aktivieren (Event wäre hier Activate)
und F9 drücken.
Gruß Matthias

AW: klar gibts dafür Tasten...!
11.08.2014 18:44:24
Andreas
Das habe ich jetzt einmal probiert.
Meine Daten eingegeben, dann irgendein Blatt aktiviert und dann F9 gedrueckt.
Das Blatt welches aktiviert wird, bekommt schon vor F9 die aktualisierten Daten. Auch ohne F9.
Aber alle anderen Blaetter werden nicht aktualisiert.
Ausserdem kann man, wenn die Userform geoeffnet ist, keine Blaetter aktivieren. Und was soll dannn in der Userform F9 bewirken?
Ich kenne mich mit excel leider nicht so gut aus, denke aber ich werde versuchen herauszufinden welche Prozeduren ich ggf mit Parameter aufrufen muss, um mein Ziel zuerreichen.
Danke

Anzeige
...und ich bezog mich darauf, ...
11.08.2014 18:24:06
Luc:-?
…Andreas: ;-]
Zitat: Ich versuche nur krampfhaft das Ereignis, welches beim Wechseln von einem zum anderen Blat ausgeloest wird, manuell auszuloesen.
Übrigens, wenn du irgendeine EreignisProzedur aus einem anderen VBA-Pgm (nicht manuell!) heraus auslösen willst, musst du sie nur direkt aufrufen (mit vorangestelltem KlassenModulNamen., dabei evtl verlangte Parameter, die sonst das Ereignis bereitstellt, nicht vergessen)!
Gruß, Luc :-?

AW: ...und ich bezog mich darauf, ...
11.08.2014 18:49:45
Andreas
Ich werde versuchen, mich in die Klassen und ihren Prozeduren einzuarbeiten.
Danke

Anzeige
AW: Dafür gibt's doch Tasten...!? Gruß owT
11.08.2014 18:47:31
Werner
Hallo Andreas,
dann versuch mal die Blätter per Makro einzublenden, dann calculate und anschließend wieder ausblenden.
dim x as long
application.screenupdating = false
For x = 1 to worksheets.count
with worksheets(x)
worksheets(x).visible = true
worksheets(x).calculate
worksheets(x).visible = false
end with
next
application.screenupdating = true
worksheets("name des sichtbaren tabellenblattes").visible = true
Kann derzeit aber nichts testen, kein computer.
Werner

AW: Dafür gibt's doch Tasten...!? Gruß owT
11.08.2014 18:55:27
Werner
Andreas,
oder anstatt
worksheets(x).calculate

worksheets(x).activate
Falls Makros auf dem activate event der tabellenblätter liegen
Werner

Anzeige
Nochmal ... warum With ?
11.08.2014 20:31:14
Matthias
Hallo Werner
warum With, wenn Du es dann in Deinem Code doch nicht benutzt?
Wenn Du With benutzen willst dann bitte richtig!
For x = 1 to Worksheets.Count
With Worksheets(x)
.Visible = True
.Calculate
.Visible = False
End With
Next
Gruß Matthias

22 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige