エクセルバージョン
マイクロソフト365
今回はModやIntを使用して飛び飛びの行(行間)や一定の行ずつ数字と色を付けていきたいと思います。
それではいってみましょう!
行間指定
例えば行間を1行開ける場合のVBAサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Option Explicit Const ROWEND As Integer = 20 '最終行番号指定 Const LINESPACE As Integer = 1 '行間を指定 Const COL As String = "A" '列を指定 Sub 行間1() Dim lineNum, rowNum As Integer '数字と背景色を消去 Columns(COL).Interior.Pattern = xlNone Columns(COL).ClearContents For rowNum = 1 To ROWEND '行間をMODで計算 lineNum = (rowNum - 1) Mod (2 + LINESPACE - 1) Cells(rowNum, COL) = lineNum '0だったら赤色 If lineNum = 0 Then Cells(rowNum, COL).Interior.ColorIndex = 3 End If Next End Sub |
パラメーター
・3行目の定数ROWEND : 最終行番号を指定
・4行目の定数LINESPACE : 行間を指定
・5行目の定数COL : 列を指定
パラメーターを指定すれば上記の内容が変更できます(*^^)v
3行開けて値を入力したい場合
4行目の定数LINESPACEを3に変えてあげれば行間が3行開いて赤色に変わります。
一定行数
一定行数ずつデータを入力する場合のVBAサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Option Explicit Const ROWEND As Integer = 20 '最終行番号指定 Const LINESPACE As Integer = 2 '行数を指定 Const COL As String = "A" '列を指定 Sub sample2() '変数 Dim lineNum, rowNum As Integer '数字と背景色消去 Columns(COL).Interior.Pattern = xlNone Columns(COL).Offset(, 1).ClearContents For rowNum = 1 To ROWEND 'エラースルー On Error Resume Next '計算 lineNum = Int((rowNum - 1) / LINESPACE) + 1 '指定行ずつ書きだす Cells(rowNum, COL).Interior.ColorIndex = lineNum + 2 Cells(rowNum, COL).Offset(, 1) = lineNum Next End Sub |
実行すると上記のように、2行の一定行に色と文字を記述します。
一定行数を4行にした場合
4行目の定数LINESPACEの値を4にすれば4行一定行数ずつで実行します。
まとめ
今回は行に関してサンプルのような飛び飛びや一定間隔のデモしてみました。
一番難解な部分はコードに記述しておきましたので、あとは今回のサンプルをもとに何かを挿入したり削除したりなど何万行でもいけるので、コードを少しいじれば色々なことが実現できるのはないかと思います。
以上です。
【関数】
【エクセル関数】MOD関数とROW関数で一定の行間を作成する方法(デモ)
【VBA】
【エクセルVBA】Mod演算子で割り算の余りを求める(基本)
【エクセルVBA】ModやIntで一定の行間や一定行を連続作成する方法(デモ)