席に番号をふるマクロ

マクロ講座78回 
席に番号をふるマクロ

席に番号をふる Excel2013 マクロ講座 78回

教室の机に番号をふる

教室に40個の机が5列で並んでいます。この机に1~40までの番号を順に入れるマクロを作ります。
セルを机と見立てて、A列からE列まで5列で、8行で40個とします。
今回のポイントは、列を1列目から5列目まで繰り返すためのFor文と、行を1行目から8行目まで繰り返すためのFor文を2重構造で使うという点です。
(サンプルファイルは、こちらから マクロ78回サンプルデータ

二重構造のFor~Next

変数は、行を表す変数と、列を表す変数、そして机の数を表す変数が必要です。
席に番号をふるマクロ1
変数を次のように宣言して、マクロを実行したいシート
ThisWorkbook.Worksheets("sekijyun") をオブジェクト変数にセットします。
  Dim sheetobj As Worksheet
  Dim i As Integer '行番号
  Dim j As Integer '列番号
  Dim dn As Integer '机の数
  Set sheetobj = ThisWorkbook.Worksheets("sekijyun")
そして、行を1から8まで繰り返す中で、1行ごとに列を1から5まで繰り返します。それを2重構造のFor~Nextステートメントで行います。
席に番号をふるマクロ2
これは行iが1のとき、列jを1から5まで繰り返して処理をするということを、iが2のときも、iが3のときも同様にiが8まで処理するということになります。
席に番号をふるマクロ3
この部分のコードは、
  dn = 1 '机の数
  With sheetobj
    For i = 1 To 8
      For j = 1 To 5
        .Cells(i, j) = dn '机の数dnを入れる
        dn = dn + 1 '机の数dnに+1する
      Next j
    Next i
  End With

コード全体は、このようになります。
Sub 机に番号()
  Dim sheetobj As Worksheet,i As Integer, j As Integer, dn As Integer  
  Set sheetobj = ThisWorkbook.Worksheets("sekijyun")
  dn = 1
  With sheetobj
    For i = 1 To 8
      For j = 1 To 5
        .Cells(i, j) = dn
        dn = dn + 1
      Next j
    Next i
  End With
End Sub
マクロを実行すると、机に見立てたセルに番号がふられます。
席に番号をふるマクロ4

ランダムな席順を降る

最初の例では、順番に番号を振りましたので、もし席替えとかしたいなら、くじなどを生徒に引いてもらって、番号を割り当てる必要があります。
そのような手間をかけずに、毎回ランダムな番号を机に割り当てて、生徒には、出席番号をもとに同じ番号のついた席に座ってもらうという方法があります。 では次に、同じ40個の机にランダムな番号を割り当てるマクロを作ることにしましょう。