Sub card_haifu()
'カード配布
Dim i As Long, j As Long, k As Long
Dim x()
Dim y()
Dim d, d2(1 To 5, 1 To 5)
Dim ld, ud, pd
Dim cd(1 To 4) As String
’---カードの位置を指定する
cd(1) = "B2": cd(2) = "I2": cd(3) = "B9":
cd(4) = "I9"
'---シートのクリア、抽選番号の表示などをクリア
Worksheets("Sheet2").Range("B:E").ClearContents
Worksheets("Sheet1").Range("B:M").Interior.ColorIndex
= xlNone
Worksheets("Sheet1").Range("A1").Value = 0
Worksheets("Sheet1").Range("A2").Value = ""
Worksheets("Sheet1").Range("C1,E1,J1,L1,C8,E8,J8,L8").Value
= ""
With Worksheets("Sheet1")
For k = 1 To 4 ’カードの枚数
For j = 1 To 5 '列ごとに乱数を取り出す
'---乱数の開始値Ldと終了値Udを指定
ld = 1 + (j - 1) * 15 '----開始値
ud = 15 * j '----終了値
pd = 5 '----取り出す個数
'----使用する配列を準備する(1列分)
ReDim x(1 To ud - ld + 1)
ReDim y(1 To ud - ld + 1)
ReDim d(1 To ud - ld + 1, 1 To 1)
Randomize
'----乱数と値を配列にセットする
For i = 1 To ud - ld + 1
x(i) = Rnd()
y(i) = i + ld - 1
Next i
'----値を取り出す(1列分の5個の数値)
For i = 1 To ud - ld + 1
d(i, 1) = y(Application.Match(Application.Small(x, i), x, 0))
Next i
'----カード1枚分の数値を配列に収める
For i = 1 To 5
d2(i, j) = d(i, 1)
Next i
Next j
'----シートにカードを書き出す
.Range(cd(k)).Resize(5, 5).Value = d2
.Range(cd(k)).Offset(2, 2).Value = "Free" '中央を「Free」とする
.Range(cd(k)).Offset(2, 2).Interior.ColorIndex = 6 '中央を黄色で塗りつぶす
Next k
End With
End Sub