Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Worksheet_Change und Fehler 1004
#1
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
Zitieren
#2
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ß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2022
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Zitieren
#3
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
Zitieren
#4
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
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions