Klick in eine Zelle abfragen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Klick in eine Zelle abfragen
von: Jan
Geschrieben am: 21.06.2015 17:28:28

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?

Bild

Betrifft: AW: Klick in eine Zelle abfragen
von: Hajo_Zi
Geschrieben am: 21.06.2015 17:34:07
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf Deine Tabelle, Code ins rechte Fenster kopieren, VBA Editor schließen.
Das Makro wird automatisch gestartet.
Der Code wirkt nur in dieser Tabelle.

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


Bild

Betrifft: AW: Klick in eine Zelle abfragen
von: Jan
Geschrieben am: 21.06.2015 19:05:36
Danke, wie kann ich jetzt noch den Bereich eingrenzen? Ich möchte nur die Klicks abfangen die im Bereich J14 bis M31 sind. Mit Target und >< kann ich nicht arbeiten?

Bild

Betrifft: AW: Klick in eine Zelle abfragen
von: Hajo_Zi
Geschrieben am: 21.06.2015 19:10:47


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

Bild

Betrifft: Range(Target.Address) ...?!
von: {Boris}
Geschrieben am: 21.06.2015 19:19:47


Set RaBereich = Intersect(RaBereich, Range(Target.Address))
Zwar nicht falsch, aber mindestens von hinten durch die Brust ins Auge.
Besser:
Set RaBereich = Intersect(RaBereich, Target)
VG, Boris

Bild

Betrifft: AW: Range(Target.Address) ...?!
von: Luschi
Geschrieben am: 21.06.2015 21:58:25
Hallo {Boris},
auf diese Unsitte habe ich Hajo schon mehrmals hingewiesen, aber entweder er liest meine Antworten dazu nicht oder sein Lerneifer, neue Anregungen zu verinnerlichen, ist nicht sehr ausgeprägt.
Gruß von Luschi
aus klein-Paris

Bild

Betrifft: Ja, Luschi, ...
von: Luc:-?
Geschrieben am: 21.06.2015 23:37:01
…Hajo legt Namenslisten unter den Rubriken Nicht antworten! und verschärft Nicht lesen und nicht antworten! an. Nun darfst du überlegen (falls du magst), ob es einen Anlass für ihn gegeben haben könnte, dich auf eine dieser Listen zu setzen… ;-))
Gruß, Luc :-?

Bild

Betrifft: AW: Klick in eine Zelle abfragen
von: Jan
Geschrieben am: 21.06.2015 19:20:37
Super Klasse Danke und so schnell. Wenn ich die Inputbox nun umgehen möchte und auf ein Userform umleite. Wie kann ich den Target.Adress Bereich in eine Variable übergeben, damit ich in dem Userform wieder in diese Zelle schreiben kann? Ich würde gern so ein Form zwischenschalten?

Bild

Betrifft: AW: Klick in eine Zelle abfragen
von: Hajo_Zi
Geschrieben am: 21.06.2015 19:26:28
UserForm1.Tag = RaBereich.Address
UserForm1.Show
Gruß Hajo

Bild

Betrifft: AW: Klick in eine Zelle abfragen
von: Hajo_Zi
Geschrieben am: 21.06.2015 19:28:37
und komplett.

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
        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

Gruß Hajo

Bild

Betrifft: AW: Klick in eine Zelle abfragen
von: Jan
Geschrieben am: 21.06.2015 19:38:21
Perfekt Merci!!!

Bild

Betrifft: AW: Klick in eine Zelle abfragen
von: Sepp
Geschrieben am: 21.06.2015 17:35:27
Hallo Jan,
entweder

Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
oder
Worksheet_SelectionChange(ByVal Target As Range)
Gruß Sepp


Bild

Betrifft: AW: Klick in eine Zelle abfragen
von: Jan
Geschrieben am: 22.06.2015 07:31:50
Nein Sepp.Also dann mal ganz einfach:
Ich habe in A1 eine variable Dropdownliste diese ist abhängig von einer andere Liste. Aber das ist ja egal. Meine Liste in A1 ist also eine Liste mit 10 beliebigen Einträgen. Wenn ich in A1 klicke, kann ich einen der 10 Einträge aussuchen und anklicken,dann steht dieser Eintrag in A1 drin. Ich möchte nun mit einem Makro diese Auswahl "simulieren". Das heißt nach ausführen des Makros, soll der erste Eintrag in dieser Dropdwonliste in A1 drin stehen. Ist es so einfacher?

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Klick in eine Zelle abfragen"