Office-Fragen.de
Worksheet_Change und Fehler 1004 - Druckversion

+- Office-Fragen.de (https://office-fragen.de)
+-- Forum: Microsoft Office (https://office-fragen.de/forum-1.html)
+--- Forum: Excel (https://office-fragen.de/forum-2.html)
+--- Thema: Worksheet_Change und Fehler 1004 (/thread-28461.html)



Worksheet_Change und Fehler 1004 - Dlawedor - 02.12.2022

Hallo,
ich habe ziemlich sicher die Ursache für das folgende Problem gefunden, sehe aber keine Lösung. Huh

Meine Arbeitsmappe hat u. a. zwei Blätter: "Konstanten" und "Urlaub". Für das Blatt "Konstanten" ist ein Worksheet_Change implementiert, in dem auch eine Zelle im Blatt "Urlaub" selektiert werden soll. Diese Selektion hat keine weitere Aktion, sondern dient nur dazu, eine bestimmte Zelle im Blatt zu markieren, so dass ich beim nächsten manuellen Zugriff sofort etwaas dort eintragen kann.
Der auf das Wesentliche reduzierte Code sieht so aus:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$A$1" Then

      'Funktioniert nicht, weil noch im "Worksheet_Change"; bringt den Fehler 1004
      Sheets("Urlaub").Range("S6").Select
   
      'Hier funktioniert's, weil dasselbe Worksheet wie im "Worksheet_Change"
      Sheets("Konstanten").Range("D11").Select
    End If

End Sub

Soweit ich es nachvollziehen konnte, liegt die Ursache wohl darin, dass das Blatt "Konstanten" aktiv ist, und damit anscheinend die Selektion eines anderen Blattes ausgeschlossen wird (so auch in den Zeilenkommentaren beschrieben). Auch das Auslagern der Select-Zeilen in eine andere SUB bringt keine Änderung; es bleibt beim Fehler 1004.

Gibt es eine Lösung? - Vielen Dank für die Ideen. Smile

Udo


RE: Worksheet_Change und Fehler 1004 - maninweb - 02.12.2022

Hallo,

Sofern sich die Zielzelle in einem anderen Blatt befindet, musst Du das Sheet aktivieren, bevor Du eine Zelle selektieren kannst. Beispiel ...

PHP-Code:
Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Address "$A$1" Then
    
    ThisWorkbook
.Worksheets("Urlaub").Activate
    ThisWorkbook
.Worksheets("Urlaub").Range("S6").Select
    
    ThisWorkbook
.Worksheets("Konstanten").Activate
    ThisWorkbook
.Worksheets("Konstanten").Range("D11").Select
    
  End 
If
  
End Sub 

Gruß


RE: Worksheet_Change und Fehler 1004 - RPP63 - 03.12.2022

Moin!
Oder man verzichtet auf .Activate und .Select und nimmt gleich die "richtige" Methode:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$1" Then
    Application.Goto Worksheets("Kamelle").Range("B18")
  End If
End Sub

Gruß Ralf


RE: Worksheet_Change und Fehler 1004 - Dlawedor - 05.12.2022

Guten Morgen,
danke an mainweb und Ralf.
Die Lösung mit "Activate" hatte ich anfangs auch versucht, aber dabei gleich versucht die Range zu aktivieren statt des Blattes. ;-(
Die Lösung von Ralf gefällt mir besser und ich habe etwas hinzugelernt.
Udo