Hallo, ich möchte gern bei einem Klick in eine Zelle, eine Iinputbox generieren lassen, deren Inhalt soll dann in der angeklickten Zelle dargestellt werden. Wie kann ich per Makro das Klick Event abfangen?
Hallo, ich möchte gern bei einem Klick in eine Zelle, eine Iinputbox generieren lassen, deren Inhalt soll dann in der angeklickten Zelle dargestellt werden. Wie kann ich per Makro das Klick Event abfangen?
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
Target = InputBox("Bitte gesuchten Namen eingeben!!")
End If
End Sub
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RaBereich As Range ' Variable für Bereich
Dim RaZelle As Range ' Variable für Zelle
Set RaBereich = Range("J14:M31 ") ' Bereich der Wirksamkeit
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
' Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
' Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
' Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
' Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
' Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
' Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle
RaZelle = InputBox("Bitte gesuchten Namen eingeben!! für Zelle " & .Address( _
False, False))
End With
Next RaZelle
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing ' Variable leeren
End Sub
Gruß Hajo
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
Zwar nicht falsch, aber mindestens von hinten durch die Brust ins Auge.Set RaBereich = Intersect(RaBereich, Target)
VG, BorisOption Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RaBereich As Range ' Variable für Bereich
Dim RaZelle As Range ' Variable für Zelle
Set RaBereich = Range("J14:M31 ") ' Bereich der Wirksamkeit
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
' Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
' Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
' Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
' Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
' Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
' Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
' For Each RaZelle In RaBereich
' With RaZelle
UserForm1.Tag = RaBereich.Address
UserForm1.Show
' RaZelle = InputBox("Bitte gesuchten Namen eingeben!! für Zelle " & .Address( _
False, False))
' End With
' Next RaZelle
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing ' Variable leeren
End Sub
Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
oder
Worksheet_SelectionChange(ByVal Target As Range)
Gruß SeppStarte den VBA Editor, indem Du Alt + F11
drückst.
Stelle sicher, dass das Fenster zweigeteilt ist. Falls nicht, drücke Strg + R
.
Doppelklicke auf Deine Excel-Datei und dann auf das Arbeitsblatt, in dem Du den Klick abfangen möchtest.
Kopiere den folgenden Code in das rechte Fenster:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("J14:M31")) Is Nothing Then
Target.Value = InputBox("Bitte gesuchten Namen eingeben!")
End If
End Sub
Schließe den VBA Editor. Das Makro wird nun automatisch gestartet, wenn Du in den definierten Bereich klickst.
Fehler: Das Makro funktioniert nicht.
Fehler: Die Inputbox erscheint nicht.
J14:M31
klickst. Andernfalls wird die Inputbox nicht angezeigt.Eine alternative Methode, um den Klick in eine Zelle abzufangen, besteht darin, das Worksheet_BeforeDoubleClick
-Event zu verwenden:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("J14:M31")) Is Nothing Then
Cancel = True
Target.Value = InputBox("Bitte gesuchten Namen eingeben!")
End If
End Sub
Diese Methode erfordert einen Doppelklick, um die Inputbox auszulösen.
J14:M31
nutzen möchtest, setze den Bereich im Intersect
Befehl wie oben gezeigt.Verwendung von UserForms: Du kannst auch ein UserForm nutzen, um die Eingabe zu erleichtern. Setze den Tag des UserForms auf die Adresse der angeklickten Zelle:
UserForm1.Tag = Target.Address
UserForm1.Show
Application.EnableEvents = False
, um zu verhindern, dass das Makro während der Ausführung erneut ausgelöst wird. Setze es nach der Ausführung wieder auf True
.Union
-Funktion verwenden, um mehrere Zellbereiche zu kombinieren.1. Wie kann ich den Bereich für die Inputbox erweitern?
Du kannst den Bereich in der Intersect
-Funktion anpassen, um weitere Zellen einzubeziehen.
2. Wie kann ich das Makro anpassen, um eine Fehlermeldung anzuzeigen, wenn keine Eingabe erfolgt?
Füge eine Überprüfung hinzu, die die Eingabe auf ""
prüft, und zeige eine Fehlermeldung an, wenn die Eingabe leer bleibt.
If InputBox("Bitte gesuchten Namen eingeben!") = "" Then
MsgBox "Keine Eingabe erfolgt!"
End If
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen