Excel 2010 VBA – Startpunkt des Makros verschieben?

Excel 2010 VBA – Startpunkt des Makros verschieben?

Hallo zusammen (erster Beitrag, habt Geduld mit mir, lol), ich habe ein Makro geschrieben, das genau das tut, was ich brauche, AUSSER dass ich nicht herausfinden kann, wie ich das Makro in Tabelle1 in einer anderen Zelle starten kann. Es postet derzeit die Informationen, die ich brauche, in Zelle B3, aber ich hätte es gerne in Zelle B10. Was meint ihr?

Sub Button1_Click()

    Sheets("Sheet1").Range("B2:B600").ClearContents

    For i = 1 To 30
generate:

        RowNum = Application.RoundUp(Rnd() * 88, 0)

        If Application.CountIf(Sheets("Sheet1").[B:B], _
        Sheets("Sheet2").Cells(RowNum, "A")) = 0 Then

            Sheets("Sheet1").Range("B" & Rows.Count).End(xlUp).Offset(2).Value = _
            Sheets("Sheet2").Cells(RowNum, "A").Value
        Else
            GoTo generate
        End If
    Next i

End Sub

Antwort1

Benutze das


Option Explicit

Public Sub Button1_Click()
    Const RNG = "B2:B600"   '<--- Range on Sheet1 --------------------
    Const OFFSET_ROW = 2
    Const START_ROW = 10    '<--- Start row --------------------------

    Dim ws1 As Worksheet:   Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    Dim ws2 As Worksheet:   Set ws2 = ThisWorkbook.Worksheets("Sheet2")

    Dim r As Long, ws2val As String

    ws1.Range(RNG).ClearContents

    For r = START_ROW To 30 * OFFSET_ROW + START_ROW - 1 Step OFFSET_ROW

        ws2val = ws2.Cells(Application.RoundUp(Rnd() * 88, 0), "A").Value

        If Application.CountIf(ws1.Range(RNG), ws2val) = 0 Then
            ws1.Range("B" & r).Value = ws2val
        Else
            r = r - OFFSET_ROW
        End If
    Next
End Sub

Testdaten inTabelle 2und Ergebnis aufBlatt1
(Die Ausgabe beginnt wie beabsichtigt in Zeile 10)

Blatt1Tabelle 2

verwandte Informationen