2 worksheet_change verbinden
#1
Hallo liebe Leser des Forums...
ich bin Anfänger,was das mit dem Exceln angeht...
ich habe ein Problem,ich möchte zwei "befehle" in einem arbeitsblatt nutzen....komme aber nicht weiter,weil immer wieder eine andere Fehlermeldung kommt.der erste sperrt beschriebene Zellen,der 2. soll das datum von heute bei einer änderung eintragen.
einzeln auf verschiedenenBlättern funktioenieren die Befehle wunderbar,hier die befehle:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim objCell As Range
    If Not Intersect(Target, Range("A1:L20")) Is Nothing Then
        Me.Protect Password:="platini77", UserInterfaceOnly:=True
        For Each objCell In Target
            If Not Intersect(objCell, Range("C8:W8")) Is Nothing Then _
                objCell.Locked = objCell.Text <> ""
        Next
    End If
End Sub


und der 2.

Option Explicit                                     ' Variablendefinition erforderlich

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    
    Dim RaBereich As Range                          ' Variable fü überwachten Bereich
    Dim RaZelle As Range                            ' Variable für Zelle die zur Zeit bearbeitet wird
    Set RaBereich = Range("G3:G32")       ' Bereich der Wirksamkeit
    '
    Set RaBereich = Intersect(RaBereich, Range(Target.Address))
    If Not RaBereich Is Nothing Then
        Application.ScreenUpdating = False          ' Bildschirm abschalten
        Application.EnableEvents = False            ' Reaktion auf Eingabe abschalten
        For Each RaZelle In RaBereich               ' Schleife über alle veränderten Zellen im überwachten Bereich
            RaZelle.Offset(0, 1) = Date             ' Datum eintragen
        Next RaZelle
        'ActiveSheet.protect "Passwort"
        Application.ScreenUpdating = True           ' Bildschirm einschalten
        Application.EnableEvents = True             ' Reaktion auf Eingabe eindschalten
    End If
    Set RaBereich = Nothing                         ' Variable leeren
End Sub


Vielleicht kann mir ja jemand helfen,danke im vorraus
Top
#2
Hallo,

bin mir nicht sicher, ob es so paßt

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim objCell As Range
    Dim RaBereich As Range                          ' Variable fü überwachten Bereich
    Dim RaZelle As Range                            ' Variable für Zelle die zur Zeit bearbeitet wird
    Set RaBereich = Range("G3:G32")       ' Bereich der Wirksamkeit
    '
    If Not Intersect(Target, Range("A1:L20")) Is Nothing Then
        Me.Unprotect Password:="platini77"
        Set RaBereich = Intersect(RaBereich, Range(Target.Address))
        If Not RaBereich Is Nothing Then
            Application.ScreenUpdating = False          ' Bildschirm abschalten
            Application.EnableEvents = False            ' Reaktion auf Eingabe abschalten
            For Each RaZelle In RaBereich               ' Schleife über alle veränderten Zellen im überwachten Bereich
                RaZelle.Offset(0, 1) = Date             ' Datum eintragen
            Next RaZelle
            'ActiveSheet.protect "Passwort"
            Application.ScreenUpdating = True           ' Bildschirm einschalten
            Application.EnableEvents = True             ' Reaktion auf Eingabe eindschalten
        End If
        Set RaBereich = Nothing
        For Each objCell In Target
            If Not Intersect(objCell, Range("C8:W8")) Is Nothing Then _
                objCell.Locked = objCell.Text <> ""
        Next
        Me.Protect Password:="platini77", UserInterfaceOnly:=True
    End If
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • tpunkt
Top
#3
Hallo tpunkt,

mal noch was grundsätzliches dazu.

Die Ereignismakros eines Moduls kannst Du jeweils nur 1x nutzen, also zB. 1x SelectionChange und 1x Change und 1x Calculate und was es noch so alles gibt. Du musst dann in Deinem Ereignismakro Fallunterscheidungen treffen, z.B. in Abhängigkeit der betroffenen Zelle(n).

Eventuell reicht es schon, beide Makros zusammenzufassen, jetzt mal unabhängig von irgendwelchen Aufhübschungen usw. (ungetestet):

Code:
Option Explicit                                     ' Variablendefinition erforderlich

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim objCell As Range
    If Not Intersect(Target, Range("A1:L20")) Is Nothing Then
        Me.Protect Password:="platini77", UserInterfaceOnly:=True
        For Each objCell In Target
            If Not Intersect(objCell, Range("C8:W8")) Is Nothing Then _
                objCell.Locked = objCell.Text <> ""
        Next
    End If

    Dim RaBereich As Range                          ' Variable fü überwachten Bereich
    Dim RaZelle As Range                            ' Variable für Zelle die zur Zeit bearbeitet wird
    Set RaBereich = Range("G3:G32")       ' Bereich der Wirksamkeit
    '
    Set RaBereich = Intersect(RaBereich, Range(Target.Address))
    If Not RaBereich Is Nothing Then
        Application.ScreenUpdating = False          ' Bildschirm abschalten
        Application.EnableEvents = False            ' Reaktion auf Eingabe abschalten
        For Each RaZelle In RaBereich               ' Schleife über alle veränderten Zellen im überwachten Bereich
            RaZelle.Offset(0, 1) = Date             ' Datum eintragen
        Next RaZelle
        'ActiveSheet.protect "Passwort"
        Application.ScreenUpdating = True           ' Bildschirm einschalten
        Application.EnableEvents = True             ' Reaktion auf Eingabe eindschalten
    End If
    Set RaBereich = Nothing                         ' Variable leeren
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • tpunkt
Top
#4
:100:
super danke.....so geht es
Top
#5
Hallo,

nur interessehalber: Welcher Vorschlag hat geholfen?
Gruß Stefan
Win 10 / Office 2016
Top
#6
ich hatte den ersten geneommen
Top


Gehe zu:


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