HERBERS Excel-Forum - das Archiv

Thema: Bei VBA Ausführung Anzeige einfrieren

Bei VBA Ausführung Anzeige einfrieren
wennerfaellt
Hallo zusammen, hallo besonders Daniel,

in einem anderen Thread hast Du, Daniel, mir geantwortet:

Hi
danke für die persönliche Rückmeldung.
Den Danke-Button finde ich auch etwas unpersönlich, zumal ich auch gar nicht mitbekomme, wenn er gedrückt wird.
die direkte Rückmeldung ist da einfach besser.

es gibt die Möglichkeit, während des Makrolaufs den Bildschirm einzufrieren, mit dem Befehl:
Application.ScreenUpdating = False

danach werden keine Änderungen mehr an der Bildschirmanzeige vorgenommen, bis entweder das Makro zu ende ist oder man die Eigenschaft wieder auf True setzt.

Besser ist aber, so zu programmieren dass sich am Bildschirm nichts ändert.
Du kannst auf einem Tabellenblatt arbeiten, das nicht sichtbar ist, wenn du vollständig referenzierst, also aus
Sheets("Tabelle1").Select

Range("A1").Select
Selection.Value = "Hallo Welt"


wird
Sheets("Tabelle1").Range("A1").Value = "Hallo Welt"


dann kann das Makro in der ganzen Mappe arbeiten, während immer das selbe Sheet angezeigt wird.
Ein Wechsel des Sheets findet dann nur noch statt, wenn man Sheets hinzufügt (neu oder kopie), weil dann immer das neu erstellte Sheet aktiv ist.
Man muss mit der vollständigen Referenzierung nur konsequent sein und beachten, dass jedes Range und auch jedes Cells auf das aktive Tabellenblatt referenziert.
Gerne vergessen wird das bei Range(Cells(), Cells()), hier muss das Tabellenblatt auch vor den beiden Cells in der Range stehen: Sheets(x).Range(Sheets(x).Cells(), Sheets(x).Cells())

Gruß Daniel


Beim Versuch Dieses umzusetzen, bin ich hier gescheitert.
Ich habe vorher im Blatt "W331" 6 Zellen verbunden:
Aus:
Sortierer.Offset(0, 1).Range("A1:A6").Select


With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Merge
Selection.Font.Bold = True
Selection.Font.Italic = False
Selection.Font.Underline = xlUnderlineStyleNone


Jetzt habe ich aus dem funktionierendem:
Sheets("Auswahl").Select

Aktuelle.Select
ActiveCell.Offset(0, 3).Range("A1").Select
Selection.Copy
Sheets("W331").Select
ActiveSheet.Paste

folgendes gemacht:
Sheets("Auswahl").Aktuelle.ActiveCell.Offset(0, 3).Range("A1").Copy

ActiveSheet.Paste

Funktioniert aber nicht.

Was ist falsch?

"Aktuelle" ist eine Variable.
AW: Bei VBA Ausführung Anzeige einfrieren
Oppawinni
Tschuldigung, das was du da machst ist doch Käse.
Wenn du dich nicht endlich mit Tutorials beschäftigst oder irgend einen Kurs machst,
wird das wahrscheinlich auch nie was.
Wenn du beschreibst, was dein Code tun soll, kann das sicher jemand locker umsetzen,
aber das bringt dich doch auch nicht weiter, weil du dann ja wieder nichts dazu gelernt hast.
AW: Bei VBA Ausführung Anzeige einfrieren
ralf_b
 Sheets("W331").Range("A1") = Sheets("Auswahl").Range("Aktuelle").Offset(0, 3).Value
AW: Bei VBA Ausführung Anzeige einfrieren
wennerfaellt
Hallo Ralf_B
Dein Code funktioniert. Außerdem habe ich dadurch dazugelernt, und den Code in verschiedene Richtungen anpassen können, so dass das ewige Copy and Paste weniger wird.
Ich hoffe, dass der Prozess dadurch auch noch einiges schneller wird.

Danke

wennerfaellt