:16: Es kam wie es kommen musste: Ich kack beim umschreiben der paar Zeilen ab.
Könnte mir jemand bitte (wieder mal) nachhelfen?
Im Anhang habe ich meine original Struktur eingefügt ( - Irrelevante Spalten und Daten leer gelassen und nicht benötigte Tabellen ebenfalls gelöscht).
Der Code von Elex hat wunderbar funktioniert gehabt. Aber wie gesagt, habe ich es nicht hinbekommen es aus meine Struktur anzupassen.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim PBasis, DatenAnlauf As Variant
Dim dict As Object
Dim i, n, a, m As Long
Dim DatPrü As String
Dim rng As Range
'**************************** Doppelklick in Spalte C ************************
If Target.Column = 3 Then
Set dict = CreateObject("Scripting.Dictionary")
DatenAnlauf = Sheets("Anlaufstellen").Range("A1").CurrentRegion
If Target.Address = "$C$1" Then
Set rng = Range("B1", Range("B1").End(xlDown))
Else
Set rng = Target.Offset(-1, -1).Resize(2)
m = Target.Row - 2
End If
PBasis = rng.Value
For i = 2 To UBound(PBasis, 1) 'Vergleich ersten drei Stellen der PLZ
For n = 1 To UBound(DatenAnlauf, 1)
If Left(PBasis(i, 1), 3) = Left(DatenAnlauf(n, 1), 3) Then 'bei gleich Datensatznummer merken
dict(a) = DatenAnlauf(n, 7) & " - " & DatenAnlauf(n, 1) & " - " & DatenAnlauf(n, 2) & " - " & DatenAnlauf(n, 3)
a = a + 1
End If
Next n
DatPrü = Join(dict.items, ",")
If DatPrü <> "" Then
With Cells(i + m, 4).Validation 'Dropdown in Spalte D ausgeben
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=DatPrü
End With
Randomize 'in Spalte C eine der ---Neunstelligen--- Datensatznummern ausgeben (zufällig)
Cells(i + m, 3).Value = dict(Int(dict.Count * Rnd))
Cells(i + m, 4) = ""
End If
a = 0 'zurücksetzen für nächsten Vergleich
dict.RemoveAll
Next i
End If
'**********************************************************************************
Set dict = Nothing
Cancel = True
End Sub
Wenn jemand bitte ein weiteres Mal so nett wäre mir zu Hand zu gehen?
Versprochen! Es gibt auch kein Copy & Paste von mir!
Ich werde die beiden Codes via Word miteinander vergleichen damit ich ein kleines Verständnis dafür bekomme, was sich an welcher Stelle, wie, verändert hat.
Und wenn ihr noch die Zeit findet:Ich kriege immer in den Hilsspalten (Basis, Spalte W und X) komischerweise immer eine Zeilennummer unter dem realen Wert. Ich habe es umgangen in dem ich einfach +1 hinzugefügt habe. Beim Vergleich hatte
Elex in der Formel 1* drin. Das musste ich aber weg editieren weil meine Datensatznummern mit 0 anfangen.
Im Sinne von:
Datensatznummer: 012345 ergibt 1*012345 = 12345
Und daher musste ich eben die 1* weg machen.
Abschließend nur noch ein kleines anliegen.
Code:Code:
=WENNFEHLER(WENN($P21="";INDEX(Aktuelle_BLZ!$J$2:$J$20000;$W21;);INDEX(Aktuelle_BLZ!$J$2:$J$20000;$X21;));"")
Hier würde ich gerne die manuell eingetragene "20000" mit Anzahl2(Aktuelle_BLZ!J:J) umändern. Aber obwohl scheinbar so einfach, hat es trotzdem nicht geklappt.
Ps.
Ich habe es als *.xlsx angehängt damit man sicher gehen kann, dass ich euch keine unanständigen Makros unterschiebe ( :19: Dafür wäre ich ehh zu blöd).