Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Eieruhr bei Makroausführung

Eieruhr bei Makroausführung
04.06.2008 10:48:00
Björn
Hallo zusammen,
Habe ein Problem, was ich nicht lösen kann.
Ich habe mehrere Makro´s erstellt, die auf Klick eines Buttons ausgelöst werden. Im gesamten Programm sind sämtliche Tabellen ausgeblendet, so dass man nur die UserForm sieht. Die Verarbeitung dauert ziemlich lange und man denkt, dass das Programm hängt. Ich möchte dem Benutzer zeigen, dass dies nicht der Fall ist.
Ich dachte da an eine Art „Eieruhr“ die erscheint, während des Ablaufes oder aber eine Nachricht.
Kann mir jemand sagen, wie man das hinbekommt?
Björn

Private Sub Import_Click()
Dim verbrauch As Integer
verbrauch = MsgBox("Sicher?", _
vbYesNo)
If verbrauch = 7 Then
Exit Sub
Else
Daten_loeschen
Loeschen_Spalten
Daten_filtern
Tabelle_Kopieren
Zeilen_loeschen
Datenimport
Kopieren_Datenimport
End If
MsgBox "Datenimport erfolgreich!", vbInformation
End Sub


17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eieruhr bei Makroausführung
04.06.2008 10:57:00
Renee
Hi Björn,
Vielleicht dauerts so nicht so lang und die Eieruhr erscheint (nur kurz):

Private Sub Import_Click()
Dim verbrauch As Integer
verbrauch = MsgBox("Sicher?", _
vbYesNo)
If verbrauch = 7 Then
Exit Sub
Else
GetMoreSpeed (True)
Daten_loeschen
Loeschen_Spalten
Daten_filtern
Tabelle_Kopieren
Zeilen_loeschen
Datenimport
Kopieren_Datenimport
GetMoreSpeed (False)
End If
MsgBox "Datenimport erfolgreich!", vbInformation
End Sub
Sub GetMoreSpeed(Optional ByVal Modus As Boolean = True)
Static intCalculation as Integer
If Modus = True Then intCalculation = Application.Calculation
With Application
.ScreenUpdating = Not Modus
.EnableEvents = Not Modus
.Calculation = IIf(Modus = True, xlManual, intCalculation)
.Cursor = IIf(Modus = True, 2, -4143)
End With
End Sub


GreetZ Renée

Anzeige
AW: @Renée
04.06.2008 11:14:00
Uwe
Hi Renée,
ich habe Dein "GetMoreSpeed" - Makro in mein Archiv kopiert. Ich hoffe Du bestehst nicht auf Deinem Copyright und ich darf es benutzen? (;-))
Gruß
Uwe
(:o)

AW: @Renée
04.06.2008 12:03:09
ransi
HAllo
Ohne Klugscheißern zu wollen:
Wenn der Code zwischendrin aussteigt sind die Einstellungen im Eimer.
Bau besser noch eine Sicherung ein damit die Alten Einstellungen auf jedenfall zurückgesetzt werden.
So in der Art:

Private Sub Import_Click()
Dim verbrauch As Integer
verbrauch = MsgBox("Sicher?", _
vbYesNo)
If verbrauch = 7 Then
Exit Sub
Else
on error goto raus
GetMoreSpeed (True)
GetMoreSpeed (False)
End If
MsgBox "Datenimport erfolgreich!", vbInformation
exit sub
raus:
GetMoreSpeed (False)
End Sub


Anzeige
AW: @Ransi
04.06.2008 13:02:13
Renee
Hi Ransi,
Ohne Klugscheißern zu wollen:
Wenn der Code zwischendrin aussteigt....

Ich baue grundsätzlich keine Codes, die zwischendrin aussteigen ;-)
Darum ist obengenannter Ratschlag wohl eher für den Anfrager, als für mich ... oder?
GreetZ Renée

AW: @Ransi
04.06.2008 13:16:43
ransi
HAllo Renee
Mißverständniss
Das hast du falsch verstanden.
Das dein Code nicht aussteigt ist mir klar.
Mit GetMoreSpeed (True) werden in der Application Einstellungen gemacht.
Jetzt kommt der eigentliche Code.
Der hebt ab oder der User beendet mittendrin mit ESC oder Strg+Pause.
Was dann ?
Die gesetzten Einstellungen bleiben und der User hat Einstellungen die er bestimmt nicht haben will.
z.B manuelle Berechnung ein, oder Ereignissmakros aus.
Das würde auch alle andere geöffnete Mappen betreffen.
Ich fände das nicht witzig.
;-)
Darum mein Einwand die Einstellungen auf jedenfall sauber zurückzustellen.
ransi

Anzeige
AW: @Ransi
04.06.2008 13:25:00
Rudi
Hallo,

oder der User beendet mittendrin mit ESC oder Strg+Pause


da hilft aber auch keine Fehlerbehandlung.
Gruß
Rudi

AW: @Rudi
04.06.2008 13:35:00
ransi
HAllo Rudi

oder der User beendet mittendrin mit ESC oder Strg+Pause


oops, hatte ich vergessen.
Kommt hierher:
Das morespeed das ich nutze sieht etwas anders aus und bezieht auch
ESC oder Strg+Pause mit ein.
ransi

AW: ... bezieht auch ESC oder Strg+Pause mit ein
04.06.2008 16:45:11
Peter
Hallo Ransi
Könntest du die Version, die auch ESC oder Strg + Pause miteinbezieht zur Verfügung stellen?
Wäre sehr daran interessiert.
Gruss, Peter

Anzeige
AW: ... bezieht auch ESC oder Strg+Pause mit ein
04.06.2008 17:38:00
ransi
Hallo Peter
Schau es dir mal an:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit
Dim AppCalc
Dim AppScreen
Dim AppEvents
Dim AppCursor
Dim AppEsc

Public Sub Werte_uebertragen()
Dim i As Long
On Error GoTo raus
Call More_speed
For i = 1 To 1000000000
    'Hier irgendwas..
Next i
raus:
If Err = 18 Then
    If MsgBox("ESC oder Strg+Pause gedrückt " & vbCrLf & "Weiter ?", vbYesNo) = vbYes Then Resume 0
End If
Call Meine_Einstellungen
End Sub

Public Sub More_speed()
With Application
    '#######################
    'Einstellungen speichern
    AppCalc = .Calculation
    AppScreen = .ScreenUpdating
    AppEvents = .EnableEvents
    AppCursor = .Cursor
    AppEsc = .EnableCancelKey
    '#######################
    'Angezogene Bremsen lösen
    .Calculation = xlCalculationManual 'Berechnung auf manuell
    .ScreenUpdating = False 'Bildschirmaktualisierung aus
    .EnableEvents = False 'Ereignismakros abschalten
    .Cursor = xlDefault 'Sanduhr ausschalten
    .EnableCancelKey = xlErrorHandler 'auf Esc oder Strg+Pause reagieren
    ' .EnableCancelKey = xlDisabled 'Esc ausschalten
    '#######################
End With
End Sub

Public Sub Meine_Einstellungen()
With Application
    .Calculation = AppCalc
    .ScreenUpdating = AppScreen
    .EnableEvents = AppEvents
    .Cursor = AppCursor
    .EnableCancelKey = AppEsc
End With
End Sub

Ist im Prinzip das gleiche wie von Renee.
ransi

Anzeige
AW: ... Vielen Dank! owT
04.06.2008 20:30:49
Peter

Aber aufgepasst...
04.06.2008 22:23:00
Renee
Peter,
Jede ander Prozedur (z.B. so wie im angefragten Post) die zwischen More_speed und Meine_Einstellungen steht muss in diesem Fall zwingend einen ErrorHandler haben, ansonsten das Ganze bei ESC einen Fehler verursacht!
GreetZ Renée

AW: Aber aufgepasst...
04.06.2008 22:28:00
Peter
Hallo Renée
Danke, dass du mich darauf aufmerksam gemacht hast.
Gruss, Peter

AW: Eieruhr bei Makroausführung
04.06.2008 10:59:24
Peter
Hallo Björn,
dann füge doch in dein UserForm(ular) ein Label ein, dass du mit einem Text, wie z. B.
"Einen Moment Geduld bitte, die Verabeitung läuft." füllst und, bei Makro-Ende wieder löscht.
Gruß Peter

Anzeige
AW: Eieruhr bei Makroausführung
04.06.2008 11:00:00
ransi
HAllo Björn
Alternative:
Erstell dir eine Userform mit einem kleinen Text drauf.
Ins Activate der Userform legst du deinen Code.
Der Aufruf der Userform kann ja über deinen Button geschehen.
ransi

AW: Eieruhr bei Makroausführung
04.06.2008 11:02:26
Matthias
Hallo
Lege eine Textbox oder ein Label auf dem UserForm(ular) an, mit dem Hinweis an das man warten soll.
Dieser Textbox gibst Du die Eigenschaft Visible=False
wenn Du nun Dein Makro startest, setze die Box auf .visible=True
und unmittelbar vor Deiner MsgBox wieder auf False
Gruß Matthias

AW: Eieruhr bei Makroausführung
04.06.2008 11:11:00
AK
Hallo Björn,
Du kannst während der Berechnungen den Cursor in eine Sanduhr wandeln:

Private Sub Import_Click()
Dim verbrauch As Integer
verbrauch = MsgBox("Sicher?", _
vbYesNo)
Application.Cursor = xlWait
If verbrauch = 7 Then
Application.Cursor = xlDefault
Exit Sub
Else
Daten_loeschen
Loeschen_Spalten
Daten_filtern
Tabelle_Kopieren
Zeilen_loeschen
Datenimport
Kopieren_Datenimport
End If
Application.Cursor = xlDefault
MsgBox "Datenimport erfolgreich!", vbInformation
End Sub


Gruß
Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige