2x Worksheet_Change kombinieren.
#1
Guten Abend,

gibt es eine Möglichkeit 2x Private Sub Worksheet_Change(ByVal Target As Range) zu verwenden/kombinieren?

Nr1

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Intersect(Target, Range("F2:F2000"))
If Not Bereich Is Nothing Then
    For Each Zelle In Bereich
        'Code für Bereich f:f
        If Zelle = "" Then
            Zelle.Offset(, 1).ClearContents
        Else
            Zelle.Offset(, 1) = Now
        End If
    Next Zelle
End If
Set Bereich = Intersect(Target, Range("H2:H2000"))
If Not Bereich Is Nothing Then
    For Each Zelle In Bereich
        'Code für Bereich H:h
        If Zelle = "" Then
            Zelle.Offset(, 1).ClearContents
        Else
            Zelle.Offset(, 1) = Now
        End If
    Next Zelle
End Sub


Nr2

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim SpNr As Long
  SpNr = Target.Column
  If SpNr = 6 Or SpNr = 8 Then
      ProtokollSchreiben Target
  End If
End Sub



Danke schonmal

Grüße

Silver
Antworten Top
#2
Hallo,

das kannst du nur dahingehend kombinieren, dass du beide Programmteile in einen zusammen führst.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Silverstream
Antworten Top
#3
Okay, danke für die schnell Antwort.

Hätte da jemand einen Tipp für mich wie das ausschauen kann?

Der erste Code schreibt mir in die Zelle rechts daneben das aktuelle Datum, falls ein Zelleintrag vorhanden.
Der zweite Code führt ein Modul nur aus wenn Änderungen in Spalte 6 oder 8 gemacht wurden.

Danke schonmal

Grüße

Silver
Antworten Top
#4
Hallo,

vielleicht so?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim Bereich As Range
Dim SpNr As Long
Set Bereich = Intersect(Target, Union(Range("F2:F2000"), Range("H2:H2000")))
If Not Bereich Is Nothing Then
    For Each Zelle In Bereich
        'Code für Bereich f:f
        If Zelle = "" Then
            Zelle.Offset(, 1).ClearContents
        Else
            Zelle.Offset(, 1) = Now
        End If
    Next Zelle
End If
SpNr = Target.Column
If SpNr = 6 Or SpNr = 8 Then
    ProtokollSchreiben Target
End If
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Silverstream
Antworten Top
#5
Hi,

für meine Begriffe reicht es, diesen Teil aus dem zweiten Makro:

Code:
Dim SpNr As Long
  SpNr = Target.Column
  If SpNr = 6 Or SpNr = 8 Then
      ProtokollSchreiben Target
  End If
in das erste Makro nach

Dim Bereich As Range

einzusetzen!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Silverstream
Antworten Top
#6
Recht herzlichen Dank für die Antworten!

Hab das jetz wie BoskoBiati gemeint hatte eingefügt und es klappt.

Grüße

Silver
Antworten Top


Gehe zu:


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