先日のExcelVBA(エクセルマクロ)の入門セミナーで面白いご質問を頂きました。
Excelのリストやデータベース(Access他)と組み合わせてプログラミングすると、便利なツールが作れるかも知れませんので、ご紹介いたします。
ドラッグされているセル範囲にデータを連続書き込みするためのプログラムです。
セル範囲をどのように認識するかがポイントですが、いくつか方法があると思います。
ここでは選択範囲の行数と列数を求めて、縦の行数分を繰り返すForの処理に加え、
横の列数分だけ繰り返すForの処理を追加してみました。
ExcelVBA入門セミナーレベルで繰り返し処理を始めて使う方には、Forの中にForを入れる繰り返し処理をマスターする練習になるかも知れません。
プログラムを見ただけではピンと来ない場合は、F8(ステップイン)を使ってExcelの動きを見ながら考えてみると分かりやすいと思います。
Sub 選択範囲にデータ入力()
Dim 行数 As Long
Dim 列数 As Integer
行数 = Selection.Rows.Count '選択範囲の行数を数える
列数 = Selection.Columns.Count '選択範囲の列数を数える
'横の列数分だけ繰り返すためのFor
For 横カウンタ = 0 To 列数 - 1
'縦の行数分だけ繰り返すためのFor
For 縦カウンタ = 0 To 行数 - 1
ActiveCell.Offset(縦カウンタ, 横カウンタ).Value = "A"
Next 縦カウンタ '次の行へ
Next 横カウンタ '次の列へ
End Sub
基本的なVBAの文法を学習しただけでも、Excelでの実務経験が多い場合には面白いアイディアが色々と出てきますね。こういうところがExcelの面白さでもあると思いました。
|