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

Rangeproblem

Rangeproblem
25.03.2021 17:23:41
Thomas
Guten Abend, um das Arbeitsblatt beim öffnen der Datei etwas zu zoomen habe ich in der Arbeitsmappe folgenden Gode abgelegt. Der lautet:
Private Sub Workbook_Open()
'Arbeitsblatt an den Bildschrirm anpassen.
If ActiveSheet.Name = "Register" Then
Sheets("Register").Range("A:R").Select
ActiveWindow.Zoom = True
Sheets("Register").Range("A1").Select
End If
End Sub
Das funktioniert. Wenn ich die Datei per Email versende, kann übrigens auch zu mir direkt versendet werden, dann lade ich die Datei wieder auf die Festplatte und öffne dann diese Datei. Wenn ich die Datei geöffnet habe muss ich ja einen Button anklicken damit die Makros usw. wieder Aktiv werden. So bald ich das mache kommt folgender Fehler.
Die Select-Methode des Range-Objektes kann nicht geöffnet werden. Dieser Fehler kann ich ignorieren und dann läuft alles so weiter wie es auch sollte. Ich kann die Datei schließen und wieder öffnen und es funktioniert alles.
Was kann das für ein merkwürdiges Phänomen sein?
Für eine Erklärung und ev. Lösung zum aufheben dieses Fehlerhinweises wäre ich dankbar.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rangeproblem
25.03.2021 18:49:09
Piet
Hallo
ich habe keine Ahnung ob es etwas bringt? Lass in der If Anweisung bitte mal Sheets("Register") vor dem Range weg. Du bist ja schon im aktiven Blatt "Register"! Vielleicht stört Excel das vorgestellte Sheets?
mfg Piet

AW: Rangeproblem
25.03.2021 22:35:03
Thomas
Hallo Piet danke.
Nein leider geht das auch nicht.
Habe jetzt auch was anderes versucht.
Habe das ganze Skript rausgenommen und stattdessen mal Sheets("Register").Select versucht. Es kommt aber der selbe Fehler.
Und mit Activate kommt der Fehler ebenso.
Merkwürdig dass dieses plötzlich einfach nicht mehr geht wie es sonst gegangen ist.

Anzeige
AW: Rangeproblem
25.03.2021 23:42:12
Yal
Hallo Thomas,
setzt das ActiveSheet fest, anstatt diese zu prüfen:
Private Sub Workbook_Open()
'Arbeitsblatt an den Bildschrirm anpassen.
ThisWorkbook.Wotksheets("Register").Activate
Range("A:R").Select
ActiveWindow.Zoom = True
Range("A1").Select
End Sub
VG
Yal

AW: Rangeproblem
26.03.2021 05:38:32
Thomas
Guten Morgen und danke...
Leider geht das auch nicht.
Da gibt es einen Laufzeitfehler 438
Objekt unterstützt diese Methode oder Eigenschaft nicht.
Freundliche Grüsse
Thomas

AW: Rangeproblem
26.03.2021 08:48:37
Yal
Hallo Thomas,
meine erste Reaktion wäre gewesen, "auf welcher Zeile" zu fragen,
aber ein kurzes, aber aufmerksames Blick auf dem Code (das nennt man lesen) gibt relativ schnell die Antwort, wo und warum.
(zugegeben, ich bin ein Bisschen hart mit jemandem, der sich auf "Basiskenntnisse in Excel" einstuft)
Viel Erfolg
Yal

Anzeige
AW: Rangeproblem
26.03.2021 16:03:07
Piet
Hallo Yal
amüssant, jetzt wo du es sagst sehe ich auch den Schreibfehle! Ich erkannte ihn aber indem ich den Code testete, er in den Laufzeitfehler lief! Dann war mir alles klar ....
mfg Piet

AW: Rangeproblem
26.03.2021 17:20:59
Thomas
Hallo Yal,
nun ja, um es zu testen habe ich mir gedacht ich kopiere einfach mal das Skript und lege eine neue Datei an um es auszuprobieren.
Nachdem du aber sagtest man sollte auch lesen können ist mir ein Licht aufgegangen.
Ich habe den Verschreiber dann auch entdeckt und dann nochmals getestet. Das hat dann funktioniert.
Aber noch kurz zur Bemerkung wegen Excel Basiskenntnis. Für mich ist hier eben für den Status zu wenig Auswahl vorhanden, somit muss ich eben die Excel Basiskenntnis auswählen, denn so falsch liege ich damit ja nicht, schließlich haben wir hier ein VBA Problem zu lösen und man liest nirgends davon das ich VBA Basiskenntnis besitze. Würde ich das angeben so würde ich mir selber keinen Gefallen tun.
Nun weiter zum Skript. Wie gesagt das Skript selber funktioniert. Aber in Kombination nicht. Wenn ich die Datei verschiebe und dann neu öffne bekomme ich ja ein Hinweis dass ich mit dem Button die Datei mit für Makro aktivieren muss. Und aktiviere ich diese Datei so, dann kommt gleich die Fehlermeldung.
Es geht somit also auch mit deiner Methode nicht. Und ich kann nur soviel sagen als ich im Januar das ganze getestet hatte funktionierte alles zufriedenstellend. Gestern plötzlich trat dieser Fehler dann auf.
Was mir aber aufgefallen ist, obschon ich dieses Skript mit Windows 10 und Office 13 geschrieben habe und meist auch verwände und funktioniert hatte, geht es jetzt nicht mehr. Aber wenn ich es auf einem Rechner mit Windows 10 und Office 19 teste geht alles ohne Fehlermeldung.
Nun frage ich mich wirklich was das für ein Hacken ist im System?

Anzeige
AW: Rangeproblem
26.03.2021 19:26:49
Yal
Hallo Thomas,
Ja, das ist so eine Sache mit der Selbsteinschätzung. Es gibt keine Massstabe, wie man gut/gut genug/auf dem Weg zum gut werden bewerten kann. Also, schwierig sich darauf zu verlassen, um eine Lösungsweg vorzuschlagen (die Beantworter tendieren im allgemein, die Fragenden zu herausfordern ;-). Auch wegen der Breite der möglichen Themen kann niemanden überall gut sein.
So ich auch nicht. Ich kann zwar wahrnehmen, dass die Sicherheitseintellung von Windows und Office in letzten Zeit zunehmend im Konflikt mit solchen früh-aktiven Makros, wie Workbook_Open, habe aber keine Ahnung, woran es liegen kann. In verschiedenen Frage/Beiträge waren similäre Fälle vorhanden. Bis jetzt scheint es keine Musterlösung zu geben.
Man könnte fehlertolerant programmieren. Es würde so aussehen (mit korrigiertem "Wotksheet"):
(Darüber hinaus, da ein Worksheet_Change stattfinden könnte, mit einem Event-Blocker)
Private Sub Workbook_Open()
'Arbeitsblatt an den Bildschrirm anpassen.
On Error Resume Next
Application.EnableEvents = False
ThisWorkbook.Worksheets("Register").Activate
Range("A:R").Select
ActiveWindow.Zoom = True
Range("A1").Select
Application.EnableEvents = True
End Sub
Es ist aber dann nicht mehr sicher, ob das gewünschte Effekt auftretten wird (kapputt geht in dem Fall nichts).
Auch einen Pacing wäre denkbar: eine Sekunde warten lassen, aber in einer Form, bei dem Excel dazwischen sein eigenen Hausaufgaben erledigen kann:
#If VBA7 Then
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit  _
Systems
#Else
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'For 32 Bit Systems
#End If
Sub SleepTest()
'wartet insgesamt 1 Sek.
'die Ausführung lässt Events zu (u.a. system Events)
Dim i
For i = 1 To 100
DoEvents
Sleep 10 'delay in milliseconds
Next
End Sub
Das Versuchen kostet nicht viel. Schlimmstenfalls funktioniert's. Garantieren kann ich es aber nicht.
VG
Yal

Anzeige
AW: Rangeproblem
27.03.2021 09:57:53
Thomas
Hallo Yal,
ich habe es mal ausprobiert. Das Problem bei der 1. Variante ist dass das zoomen nicht mehr ausgeführt wird.
Aber wohlverstanden immer nur in dieser Situation wenn ich das Makro nach dem verschieben der Datei wieder aktivieren muss.
Wenn ich es einfach reinschreibe, abspeichere und wieder öffne dann geht es.
Die 2. Variante die lasse ich sein denn die ist mir zu geheuer nur wegen so einem komischen Problem. Ich muss mal weitersuchen was es da zu machen gibt.
Danke und Gruss

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige