![]() |
Betrifft: Range mit For Schleife bestimmen
von: Robert B.
Geschrieben am: 23.11.2014 21:30:26
Hallo zusammen,
ich möchte folgenden Code ausführen lassen und nach dem ersten Durchlauf die Range verändern und den Code erneut mit der neuen Range ausführen lassen. Ich hab dazu ein Dropdown erstellt in welchem nur die Werte 1 - 6 vorkommen können, sprich maximal sollen 5 Anpassungen der Range erfolgen inklusive 6 Ausführungen.
Dim ValidationList(4) As String ValidationList(0) = "A" ValidationList(1) = "B" ValidationList(2) = "E" ValidationList(3) = "T" With Range("Q59").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:= _ xlEqual, Formula1:=Join(ValidationList, ",") .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End WithWie ihr seht soll die erste Ausführung in der Range("Q59") erfolgen. Wenn zum Beispiel jetzt die 3 selektiert wurde im Dropdown soll nach dem ersten Durchlauf die Range für den zweiten Durchlauf auf Range("Q60") und beim dritten Durchlauf auf Range("Q61")angepasst werden.
![]() ![]() |
Betrifft: AW: Range mit For Schleife bestimmen
von: Gerd L
Geschrieben am: 24.11.2014 00:06:35
Hallo Robert,
ein Ansatz:
Sub c() Dim intCheck As Integer, intCt As Integer Dim ValidationList(4) As String ValidationList(0) = "A" ValidationList(1) = "B" ValidationList(2) = "E" ValidationList(3) = "T" 'intCheck = Range("A1").Value intCheck = 3 'Testwert For intCt = 0 To intCheck - 1 With Range("Q59").Offset(0, intCt).Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:= _ xlEqual, Formula1:=Join(ValidationList, ",") .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With Next End SubGruß Gerd
![]() ![]() |
Betrifft: AW: Range mit For Schleife bestimmen
von: Robert B.
Geschrieben am: 24.11.2014 15:00:18
Hi Gerd,
der Offset funktioniert soweit einwandfrei. Ist es möglich zwischen den Ranges noch jeweils eine Leerzelle einzufügen (Q59, Leerzelle, Q60, Leerzelle, usw.). Die Range beginnt ja bei Q59 und damit müssen ja die beiden ersten Werte des Offsets (0, 0) sein wenn ich das richtig verstehe. Wenn ich jetzt direkt mit Werten im Offset rechne
.Offset(0, intCt + 2) wird die erste Ausführung ja nicht mehr in Zelle Q59 stattfinden oder? Gibt es hierzu eine smarte Lösung eine Leerzelle einzufügen?
mfG
Robert
![]() ![]() |
Betrifft: AW: Range mit For Schleife bestimmen
von: Gerd L
Geschrieben am: 24.11.2014 19:17:54
Guten Abend, Robert!
Multipliziere hat, also
(0, intCt * 2)
Gruß Gerd
![]() ![]() |
Betrifft: AW (s.unten) haben d.Herr wohl nicht nötig! :-[ oW
von: Luc:-?
Geschrieben am: 24.11.2014 05:17:31
:-?
![]() |