HERBERS Excel-Forum - das Archiv

Thema: Zwei Makros in ein Arbeitsblatt - zweite wird nicht ausführt

Zwei Makros in ein Arbeitsblatt - zweite wird nicht ausführt
Jörg Bergmann
Guten Morgen zusammen,

ich habe diese beiden Makros für ein Blatt. Das erste wird ausgeführt, das zweite nicht.

Kann es daran liegen, dass der Zielwert in einer verbundenen Zelle ist? Mir wird W12 angezeigt, wenn ich darauf klicke. Davon ab, würde ich das gerne auf die ganze Spalte beziehen. D.h. ein Wert negativ und dann die Warnmeldung.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "U5" Then 'Auwahlfeld
Application.EnableEvents = False
Columns.Hidden = False
For col = 5 To 18
If Cells(5, col) > Target.Value Then Columns(col).Hidden = True 'ggf. Zeile anpassen
Next col
Application.EnableEvents = True
End If

End Sub

Private Sub WorksheetChange(ByVal Target As Excel.Range)

If Range("W12") < 0 Then
MsgBox ("Wert überschritten")
Exit Sub
End If

End Sub
AW: Zwei Makros in ein Arbeitsblatt - zweite wird nicht ausführt
Alwin Weisangler
Hallo Jörg,

verwende stets einen Typ (Auslöseereignis) der möglichen Ereignisprozeduren nur einmal im Modul des Tabellenblattes.
In deinem Fall:
alles in:


Private Sub Worksheet_Change(ByVal Target As Range)
' deine Codes ....
End Sub


Gruß Uwe
AW: Zwei Makros in ein Arbeitsblatt - zweite wird nicht ausführt
Jörg Bergmann
Habe ich gemacht und läuft, danke! :) Nun wollte ich die Range von W12 auf W12:W1000 erweitern oder ihm generell sagen, sobald du in dieser Spalte einen negativen Wert hast: Msgbox. W:W klappt nicht, W12:W1000 auch nicht.

Denke sind manchmal sooo simple Fragen... :-(

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "U5" Then 'Auwahlfeld
Application.EnableEvents = False
Columns.Hidden = False
For col = 5 To 18
If Cells(5, col) > Target.Value Then Columns(col).Hidden = True 'ggf. Zeile anpassen
Next col
Application.EnableEvents = True
Exit Sub
End If

If Range("W12:W1000") < 0 Then
MsgBox ("Wert überschritten")
Exit Sub
End If

End Sub
AW: Zwei Makros in ein Arbeitsblatt - zweite wird nicht ausführt
ralf_b


Dim rng As Range
Set rng = Intersect(Me.UsedRange, Columns("W"))
If Not rng Is Nothing Then
If Application.WorksheetFunction.Min(rng) < 0 Then MsgBox ("Wert überschritten")
End If
AW: Zwei Makros in ein Arbeitsblatt - zweite wird nicht ausführt
daniel
Hi
du kannst in VBA nicht viele Wert in einem Schritt mit einem einzigen Wert vergleichen.
da musst du erst eine Auswertung machen:

IF Worksheetfunction.Min(Range("W12:W1000")) < 0 then

Msgbox "...."
End if


oder eine Schleife programmieren, die die jeden Wert einzeln prüft (das ist aber umständlich und langsam):
For Each X in Range("W12:W1000").Value

if X < 0 Then
Msgbox "..."
exit for
end if
next


Gruß Daniel
AW: Zwei Makros in ein Arbeitsblatt - zweite wird nicht ausführt
Yal
Hallo Jörg,

"sobald du in dieser Spalte einen negativen Wert hast"
Verwende dafür die Excel-Formel "Zählenwenn", weil die Quelle dafür mehrere Zellen sind.

Private Sub Worksheet_Change(ByVal Target As Range)


If Target.Address = "$U$5" Then 'Auwahlfeld
Application.EnableEvents = False
Application.ScreenUpdating = False
Columns.Hidden = False
For col = 5 To 18
If Cells(5, col) > Target.Value Then Columns(col).Hidden = True 'ggf. Zeile anpassen
Next col
Application.ScreenUpdating = True
Application.EnableEvents = True
End If

If WorksheetFunction.CountIf(Range("W12:W1000"), "<0") Then MsgBox ("Wert überschritten")
End Sub


VG
Yal