Hallo Hans,
warum benutzt du zur Eingabe deines Wertes keine Inputbox?
Kannst du eventuell die Datei irgendwo hochladen? Ich kann mir nicht so wirklich vorstellen wie das mit dieser Dropdownauswahl funktionieren soll, bzw. woran das Makro erkennen soll, in welcher Spalte er nun die Daten einfügen soll...
Im großen und ganzen sollte das aber alles kein Problem sein. Um in der Zelle unter C3 anzufangen musst du nur eine Variable als Long deklarieren, die dir in der jeweiligen Spalte die letzte benutzte Zelle raussucht. Und in der Zelle mit der Reihe dieser Variable+1 und der betreffenden Spalte schreibst du nun deine Daten.
Die betreffende Spalte würde ich mittels eines Find Befehles, dass den Text aus dieser Dropdownauswahl in dem Blatt "Lager" sucht und deren Spaltenzahl ausgibt, herausfinden.
Hier mal ein Makro, dass dir eventuell helfen kann. Hoffe ich habe dein Anliegen richtig gedeutet:
Sub Zuordnen()
Dim WkLager As Worksheet
Dim WkTemplate As Worksheet
Dim varSuchwert As Variant
Dim rngGefunden As Range
Dim rngDropdownauswahl As Range
Dim lngLastRowLager As Long
Dim intGefundenSpalte As Integer
Set WkLager = ThisWorkbook.Worksheets("Lager")
Set WkTemplate = ThisWorkbook.Worksheets("Template")
'Die Zelle, in der der Suchwert der Dropdownauswahl steht
varSuchwert = WkTemplate.Range("B13")
'#######ÄNDERN###### Der Bereich, in dem im Blatt Lager nach dem Wert aus der Dropdownauswahl gesucht werden soll
With WkLager.Range("A1:K1")
'Wenn der Wert nicht gefunden wird (kann durch Dropdownauswahl eigentlich nicht passieren) dann keinen Error ausgeben
On Error Resume Next
'den gefundenen Wert in rngGefunden schreiben
Set rngGefunden = .Find(What:=varSuchwert, _
LookIn:=xlValues)
'Wenn der Wert nicht gefunden wurde, also leer ist, dann eine msgbox anzeigen
If rngGefunden Is Nothing Then MsgBox "Der ausgewählte Wert wurde leider nicht gefunden!", vbCritical, "Wert nicht gefunden!"
'Spalte dieses gefundenen Wertes auslesen
intGefundenSpalte = rngGefunden.Column
'Die letzte benutzte Zelle in der Spalte des gefundenen Wertes deklarieren
lngLastRowLager = WkLager.Cells(WkLager.Rows.Count, intGefundenSpalte).End(xlUp).Row
'Den Wert aus dem Blatt Template der Zelle E15 in die betreffende Zelle schreiben
WkLager.Cells(lngLastRowLager + 1, intGefundenSpalte).Value = WkTemplate.Range("E15")
On Error GoTo 0 'Error zurücksetzen
End With
End Sub
|