
Ich habe folgende Spalten
A | B
Name | Value
One | 1
Two | 2
Three | 3
In Spalte C möchte ich eine Dropdown-Liste zur Validierung haben, die die Verkettung von Name und Wert anzeigt (also Eins - 1, Zwei - 2 usw.). Wenn der Benutzer eine Auswahl trifft (also Zwei - 2), werden nur die Daten in der Spalte Wert in die Zelle eingetragen (also 2).
Wie schaffe ich dieses Kunststück?
Antwort1
Mit Daten wie:
Platzieren Sie das folgende VBA-Makro in einem Standardmodul und führen Sie es aus:
Sub DV_Maker()
Dim i As Long
Dim s As String
For i = 2 To 4
s = s & "," & Cells(i, 1) & " - " & Cells(i, 2)
Next i
s = Mid(s, 2)
With Range("C2:C4").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=s
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End Sub
Es wird die Datenüberprüfung für Zellen einrichtenC2,C3, UndC4. Platzieren Sie dann dieses Ereignismakro im Codebereich des Arbeitsblatts:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("S2:C4")
If Intersect(Target, rng) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target.Value = Split(Target.Value, " - ")(1)
Application.EnableEvents = True
End Sub
Das Ereignismakro entfernt den Text aus der Zelle, nachdem die Daten eingegeben wurden.