日曜日, 5月 07, 2023

Excel VBA 16 
参加者リストから学級委員長を決める

学級委員長としましたが、要するに、リスト一覧から誰かを決めるという展開です。

Sub 学級委員長を抽選()
Dim result, lastRow, winnerRow As Integer
    ' result(結果)は整数
    ' lastRow(最後の行は整数
    ' winnerRow(委員長)は整数
Randomize
' ランダムな値を生成するためのシードを初期化する
lastRow = Range("A1").SpecialCells(xlCellTypeLastCell).row
' 結果の最後の行を取得する
result = Int((lastRow - 1 + 1) * Rnd + 1)
    ' ランダムに行を選択する
' Int((最大値-最小値+1)* Rnd +最小値))     ' 最小値~最大値の整数値を乱数として出力。
    ' シンプルに result = Int((lastRow) * Rnd) でも大丈夫
winnerRow = result + 1
' ランダム結果の行に1を加えてずらし、決定行に代入
    ' シンプルに winnerRow = result でも大丈夫
Range("B" & winnerRow).Select
' 選ばれた参加者の行を選択する
    ’ BはメンバーリストのあるB列のこと
MsgBox "学級委員長は、" _
& Chr(13) & ActiveCell.Value & " さんに決まりました。"
    ' メッセージボックスに結果を表示
    ' Chr(13) は改行。ActiveCell.Valueは選択しているセル
End Sub

処理結果はこんな感じ。