席に番号をふるマクロ
マクロ講座78回
席に番号をふる Excel2013 マクロ講座 78回
教室の机に番号をふる
教室に40個の机が5列で並んでいます。この机に1~40までの番号を順に入れるマクロを作ります。
セルを机と見立てて、A列からE列まで5列で、8行で40個とします。
今回のポイントは、列を1列目から5列目まで繰り返すためのFor文と、行を1行目から8行目まで繰り返すためのFor文を2重構造で使うという点です。
(サンプルファイルは、こちらから マクロ78回サンプルデータ)
二重構造のFor~Next
変数は、行を表す変数と、列を表す変数、そして机の数を表す変数が必要です。
変数を次のように宣言して、マクロを実行したいシート
ThisWorkbook.Worksheets("sekijyun") をオブジェクト変数にセットします。
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ステートメントで行います。
これは行iが1のとき、列jを1から5まで繰り返して処理をするということを、iが2のときも、iが3のときも同様にiが8まで処理するということになります。
この部分のコードは、
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マクロを実行すると、机に見立てたセルに番号がふられます。
ランダムな席順を降る
最初の例では、順番に番号を振りましたので、もし席替えとかしたいなら、くじなどを生徒に引いてもらって、番号を割り当てる必要があります。
そのような手間をかけずに、毎回ランダムな番号を机に割り当てて、生徒には、出席番号をもとに同じ番号のついた席に座ってもらうという方法があります。 では次に、同じ40個の机にランダムな番号を割り当てるマクロを作ることにしましょう。
そのような手間をかけずに、毎回ランダムな番号を机に割り当てて、生徒には、出席番号をもとに同じ番号のついた席に座ってもらうという方法があります。 では次に、同じ40個の机にランダムな番号を割り当てるマクロを作ることにしましょう。