Da die Suche leider kein Ergebnis erbracht hat, nun hier:
Ich sitze an der Änderung eines bestehenden Formulars meines Vorgängers.
hierbei habe ich folgendes Problem:
Das erste Tabellenblatt fungiert als Formular, das befüllt wird, es folgen einige (ausgeblendete) mit Datensätzen und Berechnungen im Hintergrund, sowie ein weiteres, auf dem die Ausstattung der einzelnen Kollegen aus den zuvorigen Eintragungen generiert wird. Hier erfolgt nur noch eine Dropdownauswahl in einem einzigen Punkt.
Und hier liegt die Krux...
Es ist notwendig, auf dem ersten Tabellenblatt eine Gruppe auszuwählen (dies habe ich von meinem Vorgänger übernommen, welcher dies über Kontrollkästchen gelöst hat - nicht optimal, aber naja...)
In Abhängigkeit dieser Auswahl müssen auf dem letzten Tabellenblatt eine Menge Zellen mit einer Formel versehen werden (kein Problem)
und (und hier liegt mein Problem) die Dropdownauswahl angepasst werden.
Dies habe ich über die Makroaufzeichnung laufen lassen, und folgendes Ergebnis erhalten:
Sheets("Ausstattung").Range("B6").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Datenerfassung!$C$403:$C$447"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Nun ist es aber notwendig, diese Anpassung in mehreren Zellen in wiederkehrendem Muster _
durchzuführen - naheliegendster Schluss: For-To-Step-Schleife, mit folgendem Ergebnis (Ergänzt _ um die Eintragung der Formeln):
For i = 6 To 84 Step 2
Sheets("Ausstattung").Range("B" & i ).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Datenerfassung!$C$403:$C$447"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
Sheets("Ausstattung").Range("C" & i).FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(RC[-1], _
Datenerfassung!R342C2:R399C6,4,FALSE))"
Sheets("Ausstattung").Range("D" & i).FormulaR1C1 = "=IF(RC[-2]="""","""",VLOOKUP(RC[-2], _
Datenerfassung!R342C2:R399C6,5,FALSE))"
Sheets("Ausstattung").Range("E" & i).FormulaR1C1 = "=IF(RC[-3]="""","""",VLOOKUP(RC[-3], _
Datenerfassung!R342C2:R399C6,3,FALSE))"
Next i
Soweit so gut - zumindest so lange ich das Makro vom Arbeitsblatt "Ausstattung" aus laufen lasse.
Wie gesagt sind aber die Eintragungen auf dem ersten Blatt nötig.
Integriere ich nun diesen Code in das Makro der Kontrolllkästchen, welche vom ersten Blatt aus laufen, erhalte ich den Laufzeitfehler 1004 -_-
Das Zerlegen des Codes und die entsprechende Fehlersuche hat ergeben, dass ich im Rahmen der Schleife keine Zelle auf einem anderen Arbeitsblatt .Select-en kann.
Kennt jemand das Problem, und hat ggf eine Lösung parat?
PS: Ein Ersatz der Range-Funktion durch Cells hat keine Änderung gebracht.