AW: Sub mit Übergabeparamter in Excel
12.12.2019 11:58:09
fcs
Hallo Ole,
es geht auch ohne Parameter.
Die aktuelle Zellselektion kannst du im Makro direkt verarbeiten.
Die Fehlerbehandlung ist nötig, falls vor dem Start des Makros kein Zellbereich selektiert sein sollte.
Falls das Ereignis "klick rechte Maustaste" verwendet werden soll, dann hab ich dies als Alternative angehängt.
LG
Franz
Sub ProdMatOK()
Dim rngZelle As Range, rngBereich As Range
On Error GoTo Fehler
Set rngBereich = Selection
'Sicherheitsabfrage ggf. weglassen
If MsgBox("Text in markierten Zellen ändern?" & vbLf _
& "PROD NOT OK --> PROD OK" & vbLf _
& "MAT NOT OK --> MAT OK", vbQuestion + vbOKCancel, "Sicherheitsabfrage") = _
vbCancel Then Exit Sub
For Each rngZelle In rngBereich
If rngZelle.Value = "PROD NOT OK" Then
rngZelle.Value = "PROD OK"
End If
If rngZelle.Value = "MAT NOT OK" Then
rngZelle.Value = "MAT OK"
End If
Next
Fehler:
With Err
Select Case .Number
Case 0 'alles ok
Case 13 'alles ok
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf _
& "Es ist zur Zeit kein Zellbereich selektiert"
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub
Ereignismakro unter dem Tabellenblatt. Hier sollte der Zellbereich eingeschränkt werden, in dem die Makrofunktion ausgeführt werden soll.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim rngZelle As Range
'Zellbereich einschränken in dem Klick Rechte-Maustaste das weitere Makro aufruft
Select Case Target.Column
Case 3 To 20 ' Spalte A bis T - anpassen !
Select Case Target.Row
Case Is > 1 ' anpassen !
'Sicherheitsabfrage ggf. weglassen
If MsgBox("Text in markierten Zellen ändern?" & vbLf _
& "PROD NOT OK --> PROD OK" & vbLf _
& "MAT NOT OK --> MAT OK", vbQuestion + vbOKCancel, "Sicherheitsabfrage") _
= vbCancel Then Exit Sub
For Each rngZelle In Target.Cells
If rngZelle.Value = "PROD NOT OK" Then
rngZelle.Value = "PROD OK"
End If
If rngZelle.Value = "MAT NOT OK" Then
rngZelle.Value = "MAT OK"
End If
Next
Cancel = True 'verhindert die Anzeige von Rechte-Maus-Menü
End Select
End Select
End Sub