Clever-Excel-Forum

Normale Version: Aktive Zelle ansprechen VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend zusammen,

ich habe folgendes Problem:

ich möchte gerne das sich eine Userform öffnet mit einer Listbox sobald ich eine bestimmte Zelle anklicke.
Das klappt soweit auch schon wie folgt:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'abbrechen wenn mehr als eine zelle ausgewählt wurde

If Target.Count > 1 Then Exit Sub

'prüfen ob wir in der richtigen Zelle sind
If Not Intersect(Target, Range("mitarbeiter1")) Is Nothing Then ufmitarbeiter.Show

End Sub

Im nächsten Schritt soll die Zelle die ich angeklickt habe mit dem wert befüllt werden den ich in der Listbox doppelt anklicke und sich dann die Userform schließt.

auch das klappt wie folgt:

Private Sub lbmitarbeiter_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

'listbox auslesen und Element in zelle schreiben
Range("mitarbeiter1").Value = lbmitarbeiter.List(lbmitarbeiter.ListIndex)

Unload Me


Das Problem welches ich nun habe ist, dass ich diese Userform in mehren Zellen nutzen will und nicht nur in der einen...alles was ich probiert habe endet damit, dass sich der wert in allen Zellen ändert bei denen sich die Userform aufrufen lässt :D 
Es soll sich aber nur der wert in der ausgewählten Zelle anpassen...

Ich hoffe mir kann hier jemand helfen, wenn benötigt würde ich morgen Abend noch eine Beispiel Datei erstellen.

Liebe Grüße 

Seeqi
Hallo

die Lösung hast du schon vorgegeben, du musst nur den Code ein wenig ändern:
Activecell.Value = lbmitarbeiter.List(lbmitarbeiter.ListIndex)

mfg Gast 123
Hallo!

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'abbrechen wenn mehr als eine zelle ausgewählt wurde
If Selection.Count > 1 Then Exit Sub
ufmitarbeiter.Show End Sub
Code:
Private Sub lbmitarbeiter_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

'listbox auslesen und Element in zelle schreiben
ActiveCell.Value = lbmitarbeiter.List(lbmitarbeiter.ListIndex)

Unload Me


Die Zeile
Code:
If Not Intersect(Target, Range("mitarbeiter1")) Is Nothing Then ufmitarbeiter.Show
funktioniert dann natürlich nicht mehr.

Wenn du das Ganze auf einen Bereich eingrenzen willst, dann so
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("A1:A10")
If Not Intersect(Target, Bereich) Is Nothing Then
        If Selection.Count = 1 Then ufmitarbeiter.Show
End If
End Sub