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)