Excel 2010 VBA - Mover ponto inicial da macro?

0

Oi pessoal (primeiro post bear with me lol), eu obtive uma macro escrita que faz exatamente o que eu preciso fazer EXCETO não consigo descobrir como obter a macro para iniciar na Sheet1 em uma célula diferente. Atualmente está postando as informações que eu preciso na célula B3, mas eu gostaria que ele fosse iniciado na célula B10. Pensamentos?

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
    
por Toolman 10.04.2018 / 23:08

1 resposta

0

Use isso

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

Dados de teste em Folha2 e Resultado em Folha1 em (Saída começa na linha 10 como você pretendia)

    
por 11.04.2018 / 01:08