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

Worksheet_Change funktioniert nicht

Worksheet_Change funktioniert nicht
05.02.2023 09:51:52
Björn
Guten Morgen zusammen,
ich beiße mir jetzt seit längerem die Zähne an folgendem Problem aus, habe auch schon Google befragt aber die Lösungen funktionieren bei mir leider irgendwie nicht...
Ich möchte gerne, dass das untenstehende Makro startet wenn in Zelle T21 eine Änderung passiert.
Folgendes soll dabei passieren:
- Bei "unbegrenzt" in T21 soll T22 einen weißen Hintergrund haben und an der Oberkante einen schwarzen dicken Rahmen
- Bei "pauschal" in T21 soll T22 einen RGB-Hintergrund haben und links, rechts und unten einen schwarzen dicken Rahmen sowie das Produkt aus S21 * T21 als Wert ausgeben
- Bei "individuell" in T21 soll T22 einen RGB-Hintergrund haben und links, rechts und unten einen schwarzen dicken Rahmen
Die Rahmenthematik konnte ich noch überhaupt nicht lösen, mir geht es aber auch erst einmal um den funktionierenden Code, Schönheits-OPs sind nachrangig...
Der Code (direkt unter Objekten in der richtigen Tabelle gespeichert, nicht als Modul):
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$T$22" Then
        
        
        If Range("T21") = "unbegrenzt" Then Range("T22") = "unbegrenzt"
        If Range("T21") = "unbegrenzt" Then ActiveSheet.Range("T22").Interior.ColorIndex = 2
               
        If Range("T21") = "pauschal" Then Range("T22") = Range("S21") * Range("T19")
        If Range("T21") = "pauschal" Then ActiveSheet.Range("T22").Interior.Color = RGB(135, 0, 23)
               
        If Range("T21") = "individuell" Then Range("T22") = ""
        'Hier wird vom User später selbst die Eingabe direkt in die Zelle vorgenommen
        If Range("T21") = "individuell" Then ActiveSheet.Range("T22").Interior.Color = RGB(135, 0, 23)
        End If
        End Sub
So soll es im Endeffekt im Resultat dann aussehen:
Userbild
Vielen Dank schon einmal vorab für Eure Hilfe!
Viele Grüße
Björn

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

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change funktioniert nicht
05.02.2023 09:57:58
Björn
Kurze Ergänzung (sorry): Die Variablen (unbegrenzt, pauschal, individuell) werden über DropDown ausgewählt
AW: Worksheet_Change funktioniert nicht
05.02.2023 10:54:47
onur
Du schreibst: "dass das untenstehende Makro startet wenn in Zelle T21 eine Änderung passiert."
Im Code steht aber:
If Target.Address = "$T$22" Then
AW: Worksheet_Change funktioniert nicht
05.02.2023 12:17:28
GerdL
Moin Björn!
Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Address = "$T$21" Then
        
        With Range("T22")
             If Target.Value = "unbegrenzt" Then
                 .Value = "unbegrenzt"
                 .Interior.ColorIndex = 2
                    
             ElseIf Target.Value = "pauschal" Then
                 .Value = Range("S21") * Range("T19")
                 .Interior.Color = RGB(135, 0, 23)
                    
             ElseIf Target.Value = "individuell" Then
                 'Hier wird vom User später selbst die Eingabe direkt in die Zelle vorgenommen
                 .Value = ""
                 .Interior.Color = RGB(135, 0, 23)
             End If
        End With
    
    End If
End Sub
Gruß Gerd
Anzeige
AW: Worksheet_Change funktioniert nicht
05.02.2023 17:03:09
Björn
Super, vielen Dank für die schnelle Hilfe Gerd!
Jetzt habe ich zwei neue Probleme:
1. Das Arbeitsblatt ist zwingend mit einem Passwortschutz versehen (klassisch über Blattschutz, kein vba), da es nur zur Berechnung und Ausgabe in PDF genutzt werden soll. Ohne Blattschutz läuft das Makro tadellos durch, mit Blattschutz: Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler
Kann man das irgendwie umgehen? Blattschutz ausschalten ist keine Option
2. Der o.a. Code funktioniert bekanntlich ja nur, wenn Zelle T21 geändert wird. Final soll das Makro aber starten, wenn S21 oder T21 geändert wird..Meine Versuche blieben da leider erfolglos...Hast du da einen Hinweis in die richtige Richtung?
Gruß Björn
Anzeige
AW: Worksheet_Change funktioniert nicht
05.02.2023 19:20:26
GerdL
1. Doch! Entweder keinen Blattschutz oder ihn temproär im Code ausschalten.
2. Was soll bei einer Eingabe in S21 im Worksheet_Change passieren?
Gruß Gerd
AW: Worksheet_Change funktioniert nicht
06.02.2023 06:48:35
Björn
1. Wenn ich den Blattschutz temporär im Code ausschalte, springt ein PopUp auf und verlangt die Eingabe des Passworts. Da ich aus gutem Grund der einzige bin, der dieses kennt (in der Vergangenheit haben Kollegen das ganze Arbeitsblatt zerschossen), möchte ich dieses nicht herausgeben.
Gibt es eine Möglichkeit, das Passwort bei Ausschalten des Blattschutzes direkt im vba-Code einzugeben, sodass dieses nicht abgefragt wird?
2. S21 und T21 sind Variablen die (bei Wahl von "pauschal" in T21) in Abhängigkeit zueinander stehen. Der normale User arbeitet klassisch von oben links nach unten rechts die beschreibbaren Felder ab, sodass es hier kein Problem gibt, da nach Eingabe in T21 das Makro gestartet wird.
Sollte aber jemand die Zelle T21 zuerst ausfüllen, aktualisiert sich das Blatt bei Eingabe in S21 nicht mehr, sodass hier keine Berechnung erfolgt...
Gruß Björn
Anzeige
AW: Worksheet_Change funktioniert nicht
06.02.2023 11:19:22
Pierre
Hallo Björn,
google doch mal nach "Blattschutz mit Passwort VBA" o. ä.
Gruß Pierre
AW: Worksheet_Change funktioniert nicht
06.02.2023 12:10:16
GerdL
Hallo Björn!
1. Mein Denkfehler. Du musst bei allen im Code angesprochenen Zellen u. ggf. weiteren für Eingaben benötigte den Schutz rausnehmen
und erst anschließend den Blattschutz setzen.
2.
Private Sub Worksheet_Change(ByVal Target As Range)
       
       If Target.Address = "$T$21" Then
           
           With Range("T22")
                If Target.Value = "unbegrenzt" Then
                    .Value = "unbegrenzt"
                    .Interior.ColorIndex = 2
                  
                ElseIf Target.Value = "pauschal" Then
                    .Value = Range("S21") * Range("T19")
                    .Interior.Color = RGB(135, 0, 23)
                       
                ElseIf Target.Value = "individuell" Then
                    'Hier wird vom User später selbst die Eingabe direkt in die Zelle vorgenommen
                    .Value = ""
                    .Interior.Color = RGB(135, 0, 23)
                End If
           End With
       ElseIf Target.Address = "$S$21" Then
           Range("T$21") = "pauschal"
       
       End If
       
End Sub
Gruß Gerd
Anzeige
AW: Worksheet_Change funktioniert nicht
06.02.2023 17:46:34
Björn
Super, vielen Dank Gerd!
Jetzt habe ich alles, was ich brauchte! :-)
Beste Grüße!

77 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige