Clever-Excel-Forum

Normale Version: Select
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Gemeinde,

habe folgendes Code Beispiel, wenn ich nun "Beleg_drucken" Starte dann wird am Bildschirm jeder Schrit angezeigt das heißt er springt von Tabelle zu Tabelle, fügt zeilen ein usw.
Das möchte ich nicht, ist es möglich dass die Anzeige auf dem Sheet "Eingabe 1" stehen bleibt wärend er das Makro abarbeitetn ?



Sub Beleg_drucken()
'
' Beleg_drucken Makro
'
'
    Sheets("Beleg").Select
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
       
DatenInArchiv
  
    Sheets("Eingabe1").Select
    Range("E15:I17").Select
    Selection.ClearContents
    Range("E15:I15").Select
End Sub
Sub DatenInArchiv()
'
' DatenInArchiv Makro
'
'
    Sheets("Beleg-Archiv").Select
    Rows("6:6").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Rows("2:2").Select
    Selection.Copy
    Rows("6:6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A2").Select
    Application.CutCopyMode = False
   
End Sub
Hallo Rudi,


probiere es so:

Code:
Sub Beleg_drucken()
On Error GoTo Er
'
' Beleg_drucken Makro
'
'
   Application.ScreenUpdating = False
   Sheets("Beleg").Select
   ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
       :=True, IgnorePrintAreas:=False

   DatenInArchiv

   Sheets("Eingabe1").Select
   Range("E15:I17").Select
   Selection.ClearContents
   Range("E15:I15").Select
Ex:
   Application.ScreenUpdating = True
   Exit Sub
Er:
   Application.ScreenUpdating = True
   MsgBox "Upps"
   Resume Ex
End Sub

Gruß Carsten
Hallo!
Das ganze selektieren ist völlig überflüssig.
Folgender "leicht" entschlackter Code macht exakt das Gleiche und dürfte erheblich schneller durchlaufen.
Diverse Default-Werte bei den Befehlen habe ich gestrichen, da überflüssig.
Mir ist klar, dass Dein Code vom Rekorder aufgezeichnet wurde.
Bei meinem Beispiel kann man aber schön sehen, dass er iaR überarbeitet werden sollte:
(Außerdem brauchst Du dann auch nicht die Bildschirmaktualisierung auszuschalten)

Code:
Sub Beleg_drucken()
Worksheets("Beleg").PrintOut
Call DatenInArchiv
Worksheets("Eingabe1").Range("E15:I17").ClearContents
End Sub

Sub DatenInArchiv()
With Worksheets("Beleg-Archiv")
  .Rows(6).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
  .Rows(2).Copy: .Rows(6).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End Sub

Gruß Ralf
Ergänzend:
Wenn Du DatenInArchiv nicht häufig aus anderen Subs aufrufst, kannst Du es natürlich auch gleich in Beleg_Drucken schreiben:
Code:
Sub Beleg_drucken()
Worksheets("Beleg").PrintOut
With Worksheets("Beleg-Archiv")
  .Rows(6).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
  .Rows(2).Copy: .Rows(6).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
Worksheets("Eingabe1").Range("E15:I17").ClearContents
End Sub

Gruß Ralf
Funzt,

herzlichen Dankl an alle !!!


Carsten :\ Deine Variante sieht natürlich sehr schön schlank aus, würde ich auch bevorzugen wenn ich es schreiben könnte, diesen Aufwand möchte ich aber nicht betreiben.
                für mich ist es einfacher wenn ich es mit dem Recorder aufnehme und ändere.

                Die version von Ralf ist für mich derzeit "logisch" die kann ich immer so davor schalten und es funzt. Aber einen Aufgenommenen Code so zu veränder dass er geht kann ich leider ("noch") nicht.
Sorry, Namen verwechselt

Ralf >> Carsten
Carsten >> Ralf
Ist ja nicht tragisch, Rudi.
Mein alter Mathelehrer sagte allerdings: "Stillstand ist Rückschritt!"
Irgendwann kommst Du in eine Situation, dass Dein erstellter Code unerträglich langsam wird.
Dies kann man u.a. durch korrekte Referenzierung verhindern.
Lies Dir doch mal diesen interessanten Text durch:
http://www.online-excel.de/excel/singsel_vba.php?f=78

Gruß Ralf
(06.08.2015, 11:39)RPP63 schrieb: [ -> ]Ist ja nicht tragisch, Rudi.
Mein alter Mathelehrer sagte allerdings: "Stillstand ist Rückschritt!"
Irgendwann kommst Du in eine Situation, dass Dein erstellter Code unerträglich langsam wird.
Dies kann man u.a. durch korrekte Referenzierung verhindern.
Lies Dir doch mal diesen interessanten Text durch:
http://www.online-excel.de/excel/singsel_vba.php?f=78

Gruß Ralf

Ein Dozent von mir sagte "Du must nicht alles wissen, aber du musst wissen wo es steht"
Da Excel nicht zu meiner Kernkompetenz gehört, muss ich halt nachfragen.
Guter Link
Dafür gibt es ja die Speziallisten !!

Wünsche allen einen heißen Nachmittag ......
Hallo Rudi,

Zitat:Aber einen Aufgenommenen Code so zu veränder dass er geht kann ich leider ("noch") nicht.
... und wenn Du es nicht versuchst, dann kannst Du das auch in hundert Jahren auch leider ("noch") nicht.
allerdings wirst Du Tausende von Dateien haben, die da mühsam durch den Code rumpeln.

Wohlan ... ans Werk .., wenn man sich daran gewöhnt hat, ist es plötzlich auch gar nicht mehr so schwer.
Hi,

(06.08.2015, 19:11)Käpt schrieb: [ -> ]wenn man sich daran gewöhnt hat, ist es plötzlich auch gar nicht mehr so schwer.

und wenn er an einer Kopie der Datei rumprobiert, kann ja auch nix passieren.
Seiten: 1 2