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

Sub mit Übergabeparamter in Excel

Sub mit Übergabeparamter in Excel
12.12.2019 10:24:54
Ole
Moin,
bis jetzt musste ich mich noch nicht mit Übergabeparametern in VBA Subs beschäftigen, jetzt ist es so weit.
Der Sub soll es dem Benutzer ermöglichen per Knopfdruck, die von ihm ausgewählten Zellen, umzubeschriften, an sich keine komplizierte Aufgabe, aber leider sehe ich beim Makro zuweisen den SUB nicht in der Liste.
Gehe ich an die Aufgabe ganz falsch ran und muss eigentlich per Worksheet_Change an die Sache rangehen?
hier mal der Code:

Sub ProdMatOK(rngBereich As Range)
Dim rngZelle As Range
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
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sub mit Übergabeparamter in Excel
12.12.2019 10:48:14
EtoPHG
Hallo Ole,
1. Siehst du die Makros nicht, da eine Sub mit Parametern nicht ohne diese aufgerufen werden kann.
2. Worksheet_Change wäre ein weiterer falscher Ansatz, denn diese Ereignis wird nur ausgelöst, wenn eine (manuelle) Änderung eines Zellinhalts stattfindet.
3. Die Empfehlung wären die Ereignisse Worksheet_BeforeDoubleClick oder Worksheet_BeforeRightClick. Diese können durch Doppel- oder Rechtsklick- direkt durch den Benutzer ausgelöst werden. Aber beantworte zuerst
diese Fragen stellen sich:
Was genau sind deine Anforderungen? Genauso wie im Code, oder auch 'zurück'ändern?
Sollen nur Zellen in einem bestimmten Bereich (welcher?) gem. deinem Code geändert werden können?
Soll nur in bestimmten Tabellenblätter (welche?) der Code ausgeführt werden können?
Gruess Hansueli
Anzeige
AW: Sub mit Übergabeparamter in Excel
12.12.2019 10:56:41
Ole
Es soll nur in diese Richtung geändert werden, ein zurückändern ist nicht nötig. Der Bereich für den die Änderungen angewendet werden sollen, soll durch den Benutzer durch klicken auswählbar sein. Die Auswahl beschränkt sich auf ein und das selbe Tabellenblatt
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

Anzeige
AW: Sub mit Übergabeparamter in Excel
12.12.2019 12:08:00
Ole
Hallo Franz,
mir war nicht bewusst, dass Makros aktuelle Zellselektionen nicht direkt verarbeiten können. Die erste Lösung finde ich sehr elegant und werde diese so übernehmen, vielen lieben Dank

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige