Microsoft Excel

Herbers Excel/VBA-Archiv

Range mit For Schleife bestimmen

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 With

Wie 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.

Könnt ihr mir bitte weiterhelfen wie ich das Ganze angehen soll? Bisher habe ich es lediglich geschafft den im Dropdown selektierteh Wert an eine Variable zu übergeben und könnte mir Vorstellen den bisher festgelegten Range durch eine Range-Variable zu ersetzen welche durch eine Schleife entsprechend der Selektion im Dropdown hochlaufen muss.

Wäre echt nett wenn mir jemand einen Denkanstoß geben kann und Entschuldigung für die wohlmöglich dumme Frage :o(

mfG
Robert

  

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 Sub
Gruß 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

:-?


 

Beiträge aus den Excel-Beispielen zum Thema "Range mit For Schleife bestimmen"