Microsoft Excel

Herbers Excel/VBA-Archiv

Laufzeitfehler 104 automatisches Starten von Makro


Betrifft: Laufzeitfehler 104 automatisches Starten von Makro von: Maik
Geschrieben am: 17.09.2019 16:08:33

Hallo zusammen,

beim öffnen einer Tabelle starte ich mit call s_Makro_starten mein Makro.

ich habe folgende Definitionen:

Public ws_AZ As Worksheet
Sub s_Makro_starten()

'Registernamen in die Variablen übernehmen
Set ws_AZ = ThisWorkbook.Worksheets("Arbeitszeiten")

' Sortierspalten auf 0 stetzen
Set rSortieren_1 = ws_AZ.Range(Cells(1, 1), Cells(1, 1))

Hier bekomme ich jetzt den Fehler, Laufzeitfehler _global 1004.

Starte ich danach das Makro von Hand, geht es.
Was fehlt :-)

Danke euch

Maik

  

Betrifft: AW: Laufzeitfehler 104 automatisches Starten von Makro von: 1713506.html
Geschrieben am: 17.09.2019 16:13:54

Der Fehler kommt bei Cells(1,1)

  

Betrifft: AW: Laufzeitfehler 104 automatisches Starten von Makro von: 1713514.html
Geschrieben am: 17.09.2019 16:27:37

Hi
ein Cells ohne Tabellenblattangabe davor bezieht sich IMMER auf das gerade aktive Tabellenblatt.
der Fehler kommt, wenn die Cells, die die Range definieren sollen, auf einem anderen Blatt liegen als die Range.

richtig ist:

Set rSortieren_1 = ws_AZ.Range(ws_AZ.Cells(1, 1), ws_AZ.Cells(1, 1))
Aus diesen Grund bevorzuge ich es, den Zellbereich über die RESIZE-Funktion zu beschreiben und nicht über die Eckzellen:
Set rSortieren_1 = ws_AZ.Cells(1, 1).Resize(1, 1)
Gruß Daniel
  

Betrifft: AW: Laufzeitfehler 104 automatisches Starten von Makro von: 1713533.html
Geschrieben am: 17.09.2019 18:47:28

Hallo Maik,

oder Daniels 1. Vorschlag so umsetzen:

 With ws_AZ
    Set rSortieren_1 = .Range(.Cells(1, 1), .Cells(1, 1))
 End With
Gruß von Luschi
aus klein-Paris

PS: Warum nicht eigentlich: Set rSortieren_1 = ws_AZ.Range("A1") ?!?
Die obere Variante benutzt man doch, wenn irgendein Zahlenwert durch eine Variable ersetzt wird.
  

Betrifft: AW: Laufzeitfehler 104 automatisches Starten von Makro von: 1713707.html
Geschrieben am: 18.09.2019 16:30:16

Hallo Daniel,

nach dem Tipp mit dem "bezieht sich immer auf das aktive Tabellenblatt" habe ich folgendes eingefügt:

Public ws_AZ As Worksheet

Sub s_Makro_starten()

'Registernamen in die Variablen übernehmen
Set ws_AZ = ThisWorkbook.Worksheets("Arbeitszeiten")
ws_AZ.Activate

Jetzt meckert er die letzte Zeile mit Worksheets an (Fehler 1004 Die Methode Activate für das Objekt Worksheet ist fehlgeschlagen)

Der Fehler kommt aber immer nur, wenn das Makro automatisch beim öffnen der Datei gestartet wird. Starte ich danach von Hand, läuft es durch.
Muss ich hier noch etwas anderes initialisieren?

Danke für die Hilfe

MAik

Beiträge aus dem Excel-Forum zum Thema "Laufzeitfehler 104 automatisches Starten von Makro"