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

Zwei Worksheet_Change verschachteln

Zwei Worksheet_Change verschachteln
09.02.2015 14:37:44
T1M0
Hallo liebes Forum,
ich möchte zwei Worksheet_Change-Makros in einer Excel Tabelle nutzen. Leider kommt der Hinweis, dass dies nicht möglich sei. Wie kann ich folgende zwei Makros in meine Tabelle integrieren bzw. ineinander verschachteln, sodass beide ausgeführt werden können?
Ich bin dankbar für jeden Hinweis!
Makro 1:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo hell
With ActiveWorkbook.ActiveSheet
Set searchObject = .Cells.Find(What:="RG", LookAt:=xlWhole)
If Not searchObject Is Nothing Then statusColumn = searchObject.Column
If .Range(Target.Address).Column = statusColumn Or .Range(Target.Address).Column =  _
statusColumn - 1 Or .Range(Target.Address).Column = statusColumn - 2 Or .Range(Target.Address). _
Column = statusColumn - 7 Then
'.Cells(.Range(Target.Address).Row, .Range(Target.Address).Column + 1) = Date
.Cells(.Range(Target.Address).Row, statusColumn - 3) = Date
'+2 => Datum in übernächste Spalte, -5 => in Zelle 5 Spalten von Änderungszelle
End If
End With
Makro 2:

Private Sub Worksheet_Change(ByVal Target As Range)
Const myPfad As String = "\\Pfad..."
If Target.Column = 2 Then
If Target.Value = 4 Then
If MsgBox("Bla Bla", vbYesNo) = 6 Then
Shell "Explorer.exe " & myPfad, vbNormalFocus
End If
End If
End If
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwei Worksheet_Change verschachteln
09.02.2015 14:43:43
Klaus
Hi,
einfach beide Makros in die gleiche Worksheet_Change schreiben, die tuen sich ja nichts.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo hell
Const myPfad As String = "\\Pfad..."
With ActiveWorkbook.ActiveSheet
Set searchObject = .Cells.Find(What:="RG", LookAt:=xlWhole)
If Not searchObject Is Nothing Then statusColumn = searchObject.Column
If .Range(Target.Address).Column = statusColumn Or .Range(Target.Address).Column =  _
statusColumn - 1 Or .Range(Target.Address).Column = statusColumn - 2 Or .Range(Target.Address).Column = statusColumn - 7 Then
'.Cells(.Range(Target.Address).Row, .Range(Target.Address).Column + 1) = Date
.Cells(.Range(Target.Address).Row, statusColumn - 3) = Date
'+2 => Datum in übernächste Spalte, -5 => in Zelle 5 Spalten von Änderungszelle
End If
End With
If Target.Column = 2 Then
If Target.Value = 4 Then
If MsgBox("Bla Bla", vbYesNo) = 6 Then
Shell "Explorer.exe " & myPfad, vbNormalFocus
End If
End If
End If
End Sub
Du hast aber unvollständig geliefert. Es fehlt mindestens
hell:
End Sub
im Makro Nummer 1.
Grüße,
Klaus M.vdT.

Anzeige
AW: Zwei Worksheet_Change verschachteln
09.02.2015 15:16:04
T1M0
Hallo Klaus,
der Warnhinweis verschwindet, jedoch führt er Makro 2 nicht aus.
Kannst du noch mal drüber schauen?
Ich danke dir vielmals!
Bestehendes Makro (1):
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo hell
With ActiveWorkbook.ActiveSheet
Set searchObject = .Cells.Find(What:="RG", LookAt:=xlWhole)
If Not searchObject Is Nothing Then statusColumn = searchObject.Column
If .Range(Target.Address).Column = statusColumn Or .Range(Target.Address).Column =  _
statusColumn - 1 Or .Range(Target.Address).Column = statusColumn - 2 Or .Range(Target.Address).Column = statusColumn - 7 Then
.Cells(.Range(Target.Address).Row, statusColumn - 3) = Date
End If
End With
If Target.Column = 26 _
And Target.Row >= 2 _
And Not Target.Value = 0 _
And Selection.Cells.Count = 1 Then
Application.EnableEvents = False
With Target.Offset(, Target.Value)
If .Value = "" Then
.Value = Date
Else
If MsgBox("Wollen Sie den Reifegrad wirklich ändern?", vbYesNo) = 6 _
Then
.Value = Date
End If
End If
End With
End If
hell:
Application.EnableEvents = True
End Sub
Zu integrierendes Makro (2):
Private Sub Worksheet_Change(ByVal Target As Range)
Const myPfad As String = "\\Pfad..."
If Target.Column = 2 Then
If Target.Value = 4 Then
If MsgBox("Bla Bla", vbYesNo) = 6 Then
Shell "Explorer.exe " & myPfad, vbNormalFocus
End If
End If
End If
End Sub
Mein Vorschlag:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo hell
Const myPfad As String = "\\Pfad..."
With ActiveWorkbook.ActiveSheet
Set searchObject = .Cells.Find(What:="RG", LookAt:=xlWhole)
If Not searchObject Is Nothing Then statusColumn = searchObject.Column
If .Range(Target.Address).Column = statusColumn Or .Range(Target.Address).Column =  _
statusColumn - 1 Or .Range(Target.Address).Column = statusColumn - 2 Or .Range(Target.Address).Column = statusColumn - 7 Then
.Cells(.Range(Target.Address).Row, statusColumn - 3) = Date
End If
End With
If Target.Column = 2 Then
If Target.Value = 4 Then
If MsgBox("Bla Bla", vbYesNo) = 6 Then
Shell "Explorer.exe " & myPfad, vbNormalFocus
End If
End If
End If
If Target.Column = 26 _
And Target.Row >= 2 _
And Not Target.Value = 0 _
And Selection.Cells.Count = 1 Then
Application.EnableEvents = False
With Target.Offset(, Target.Value)
If .Value = "" Then
.Value = Date
Else
If MsgBox("Wollen Sie den Reifegrad wirklich ändern?", vbYesNo) = 6 _
Then
.Value = Date
End If
End If
End With
End If
hell:
Application.EnableEvents = True
End Sub

Anzeige
AW: Zwei Worksheet_Change verschachteln
09.02.2015 15:55:08
Klaus
Hi,
eigentlich müsste er das ausführen, ich sehe zumindest keinen Fehler im Code. Setzt doch mal Haltepunkte und versuch herauszufinden, ob er überhaupt bis zum zweiten IF vorspringt. Ohne Musterdatei kann ich nicht sinnvoller helfen.
Grüße,
Klaus M.vdT.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige