AW: Ein Beispiel für Gültigkeit / SVERWEIS
12.03.2013 09:49:59
Klaus
laufe ich innerhalb einer Spalte die Zeilen durch, das ist richtig und so gewollt
OK, das macht sogar Sinn! Das nehme ich so hin und pfusche dir nicht mehr in deine Namenskonvention.
die Funtionen liefern mir die Anfangszeile und die Endzeile des Dropdownbereiches (Spalte ist immer "D").
Ok ... tatsächlich war mir "ByRef" nicht geläuftig. Jetzt sehe ich auch wass die Funktions machen.
Sub MessungDropDown()
' DropDown-Menü für Messungen
Dim rngDaten As Range
Dim dRowCount As Double
Dim dLastRowCount As Double
Dim dCount As Double
Dim wksOld As Worksheet
Set wksOld = ActiveSheet
'Bereich auswählen
Sheets("Komponentenliste").Activate
dCount = Range("A65536").End(xlUp).Row
Call SucheTxtInSpalte(4, dCount, "Messeingänge", dRowCount)
dRowCount = dRowCount + 1
'MsgBox dRowCount
Call SucheNextLeerInSpalte(4, dRowCount, dLastRowCount)
dLastRowCount = dLastRowCount - 1
'MsgBox dLastRowCount
'MsgBox dCount
Set rngDaten = Range(Cells(dRowCount + 1, 4), Cells(dLastRowCount, 4))
'MsgBox rngDaten
wksOld.Activate
With ActiveCell.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="='Komponentenliste'!" & rngDaten.Address
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Ich habe der aktivierten Zelle den Bereich "Komponentenliste!" & rngDaten zugewiesen, einfach per Datengültigkeit.
Meine Anmerkung dazu:
Die Datengültigkeit könntest du auch gleich dem gesamten Bereich zuweisen statt nur der aktiven Zelle.
Ich war versucht, die ".activate" aus deinem Code rauszunehmen. Aber deine Text-Spalten-Leer SUBS referenzieren auf die aktive Tabelle, soweit ich die verstanden habe. Nach dem Code gehe ich mit activate wieder ins alte Blatt zurück, dass ich mir in wksOld gemerkt habe.
Wenns für dich so iO ist, ist gut ... ich würd dir aber raten, deine Text-Leer-Subs nochmal umzuschreiben um so das "activate" am Anfang des Codes loszuwerden. Musst ja "nur" das gewählte Blatt als Variable mit übergeben und dann alles in WITH setzen.
Grüße,
Klaus M.vdT.