Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
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

bitte warten einblenden

bitte warten einblenden
01.03.2017 09:29:00
tursiops
Hallo!
Ich möchte während der per VBA automatisierten Prozesse in meiner Arbeitsmappe eine Meldung für den Benutzer anzeigen, z.B. "bitte warten" oder eine primitive Statusanzeige. Eigentlich sollte das mit Application.ScreenUpdating ganz gut klappen, aber hier finde ich den Fehler nicht. Ich habe bereits mehrere Versionen versucht. Das Arbeitsblatt "bitte warten" wird während der Prozedur jedoch nicht angezeigt. Kann mir jemand auf die Sprünge helfen?
Gruß Frank
Sub Status_setzen_AzM()
' Makros für den Stellenplan
Dim Zeile As Long
Sheets("AzM").Select
Zeile = Range("A65536").End(xlUp).Row
ActiveSheet.Range("C2").Copy
Sheets("Start").Select
Sheets("bitte warten").Visible = True
Sheets("bitte warten").Select
Range("A1").Select
Application.ScreenUpdating = False
Sheets("AzM").Select
Range(Cells(4, 3), Cells(Zeile, 3)).Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range(Cells(4, 3), Cells(Zeile, 3)).Select
Selection.Copy
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bitte warten einblenden
01.03.2017 10:08:21
Daniel
Hi
schreibe den Code mal so, dass du das Blatt, auf dem du arbeiten willst, nicht selektieren musst.
dazu verzichtet man auf das Selektieren des Blattes, sondern stellt das Tabellenblatt vor die Range.
dann kann das ScreenUpdating = False entfallen:
Sub Status_setzen_AzM()
Dim Zeile As Long
'--- Bitte Warten einblenden
With Sheets("bitte warten")
.Visible = True
.Select
.Range("A1").Select
End With
'--- Berechnung ausführen
With Sheets("AzM")
Zeile = .Range("A65536").End(xlUp).Row
.Range("C2").Copy
With .Range(Cells(4, 3), Cells(Zeile, 3))
.PasteSpecial Paste:=xlFormulas
.Copy
.PasteSpecial xlPasteValues
End With
End With
Application.CutCopyMode = False
'--- Bitte Warten ausblenden
Sheets("AzM").Select
Sheets("bitte warten").Visible = False
End Sub
Gruß Daniel
Anzeige
AW: bitte warten einblenden
01.03.2017 14:25:37
tursiops
Hallo!
Vielen Dank für die Unterstützung.
Das sieht interessant aus. Allerdings muss ich mich da völlig neu einlesen.
Momentan läuft der Code in der Zeile: With .Range(Cells(4, 3), Cells(Zeile, 3)) in den Fehler.
Fehl hier nicht die Auswahlmethode oder so etwas? . Select habe ich versucht, klappt aber auch nicht.
Gruß Frank
AW: bitte warten einblenden
01.03.2017 15:20:33
Werner
Hallo Frank,
da sind vor den beiden Cells die Punkte verloren gegangen
With .Range(.Cells(4, 3), .Cells(Zeile, 3))
Gruß Werner
AW: bitte warten einblenden
01.03.2017 15:35:59
tursiops
Hallo!
Vielen Dank!
Die Methode finde ich sehr gut, die werde ich sicher häufiger mal nutzen.
Der Code an sich funktioniert nun auch (das kopieren und einfügen).
Das Blatt "bitte warten" wird jedoch trotzdem während des Prozedurablaufes nicht, bzw. nur Sekundenbruchteile lang angezeigt.
Das eigentliche Ziel war ja, das es während der gesamten Dauer angezeigt wird...
Gruß Frank
Anzeige
AW: bitte warten einblenden
01.03.2017 15:39:21
Werner
Hallo,
kann es sein, dass du nur einen Bruchteil deines eigentlichen Makros hier zeigst?
Die Code-Zeilen zum wieder ausblenden des Blattes "bitte warten" muss natürlich ganz ans Ende deines Makros.
Gruß Werner
AW: bitte warten einblenden
01.03.2017 16:01:37
tursiops
Hallo!
Es handelt sich um das gesamte Makro. So funktioniert es, obwohl wir ja eigentlich um das Screenupdating herumkommen wollten...:
Sub Status_setzen_AzM()
Dim Zeile As Long
'--- Bitte Warten einblenden
With Sheets("bitte warten")
.Visible = True
.Select
.Range("A1").Select
End With
Application.ScreenUpdating = False
'--- Berechnung ausführen
With Sheets("AzM")
Zeile = .Range("A65536").End(xlUp).Row
.Range("C2").Copy
With .Range(.Cells(4, 3), .Cells(Zeile, 3))
.PasteSpecial Paste:=xlFormulas
.Copy
.PasteSpecial xlPasteValues
End With
End With
Application.CutCopyMode = False
'--- Bitte Warten ausblenden
Sheets("AzM").Select
Sheets("bitte warten").Visible = False
Application.ScreenUpdating = True
End Sub

Anzeige
AW: bitte warten einblenden
02.03.2017 11:09:18
Werner
Hallo,
für was willst du ein Blatt/Hinweis "bitte warten" anzeigen, bei einem Makro, das nur Sekundenbruchteile läuft?
Das Problem mit deinem "Sreenupdating" lag schlicht und ergreifend an deiner Selektiererei und ist durch die Änderungen von Daniel behoben.
Sub Status_setzen_AzM()
Dim Zeile As Long
Application.ScreenUpdating = False
'--- Berechnung ausführen
With Sheets("AzM")
Zeile = .Range("A65536").End(xlUp).Row
.Range("C2").Copy
With .Range(.Cells(4, 3), .Cells(Zeile, 3))
.PasteSpecial Paste:=xlFormulas
.Copy
.PasteSpecial xlPasteValues
End With
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige