Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Klick in eine Zelle abfragen

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?

  

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
GrußformelHomepage


  

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?


  

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


  

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


  

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


  

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


  

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?


  

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


  

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


  

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

Perfekt Merci!!!


  

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



  

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?


 

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