この記事では、VBAマクロで結合したセルに値を入れる方法(Range、Cellsの使い方)【MergeArea、Value、Offset】について解説していきます。
ポイントとしては、
・Range関数やCells関数を使用して結合セルを特定すること
・MergeArea関数で結合範囲を取得すること
・Value関数で値を設定すること
です。
なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロで結合したセルに値を入れる方法(B列の結合セルに8を入れる)
それではまず、VBAマクロで特定の列の結合セルに値を入れる方法について解説していきます。
具体的には、B列の結合セルに8を入れる仕様としております。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub aaaaaBretsugoukankiaaaaa()
'B列の行数を取得
Dim aaaaalastRowaaaaa As Long
aaaaalastRowaaaaa = Cells(Rows.Count, "B").End(xlUp).Row
'B列の1行目から最終行まで繰り返し処理
Dim aaaaagyouaaaaa As Long
For aaaaagyouaaaaa = 1 To aaaaalastRowaaaaa
'セル範囲がマージ範囲かどうかチェック
If Not Range("B" & aaaaagyouaaaaa).MergeCells Then
'非結合セルの場合は次の行へ
GoTo NextGyou
End If
'マージ範囲の左上セルに8を入れる
Range("B" & aaaaagyouaaaaa).MergeArea.Cells(1, 1).Value = 8
NextGyou:
Next aaaaagyouaaaaa
End Sub
コードのAlt+F8を押し、マクロ選択画面でaaaaaBretsugoukankiaaaaa関数を実行します。
このコードでは、以下のような処理を行っています。
1. B列の最終行番号を取得し、aaaaalastRowaaaaaa変数に格納します。
2. aaaaagyouaaaaa変数を1からaaaaalastRowaaaaaまで1ずつ増やしながら、B列の各行に対して以下の処理を繰り返します。
3. 現在の行のB列のセルが結合セルかどうかをMergeCellsプロパティで判定します。
4. 結合セルでない場合は、NextGyouラベルに飛んで次の行の処理に移ります。
5. 結合セルの場合は、MergeAreaプロパティで結合範囲を取得し、その左上のセル(Cells(1, 1))のValueプロパティに8を設定します。
これにより、B列の結合セルにのみ8が入力されます(^^)/
VBAマクロで結合したセルに値を入れる方法(シート全体の結合セルに上のセルの値を入れる)
続いては、シート全体の結合セルに、その上のセルの値を入れる方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub aaaaazensheetsウエセルいれるaaaaa()
'全シートを処理
Dim aaaaamySheetaaaaa As Worksheet
For Each aaaaamySheetaaaaa In ThisWorkbook.Sheets
With aaaaamySheetaaaaa
'処理対象シートのセル範囲を取得
Dim aaaaaallRangeaaaaa As Range
Set aaaaaallRangeaaaaa = .Cells.SpecialCells(xlCellTypeConstants)
'取得したセル範囲から結合セルのみ抽出
Dim aaaaamergedRangeaaaaa As Range
For Each aaaaamergedRangeaaaaa In aaaaaallRangeaaaaa
If aaaaamergedRangeaaaaa.MergeCells Then
'結合セルの1つ上のセルの値を取得
Dim aaaaaueセルちaaaaa As Range
Set aaaaaueセルちaaaaa = aaaaamergedRangeaaaaa.MergeArea.Cells(1, 1).Offset(-1, 0)
'結合セル全体に上のセルの値を設定
aaaaamergedRangeaaaaa.MergeArea.Value = aaaaaueセルちaaaaa.Value
End If
Next aaaaamergedRangeaaaaa
End With
Next aaaaamySheetaaaaa
End Sub
コードのAlt+F8を押し、マクロ選択画面でaaaaazensheetsウエセルいれるaaaaa関数を実行します。
このコードでは、以下のような処理を行っています。
1. ThisWorkbook.Sheetsで全シートを取得し、aaaaamySheetaaaaa変数に1つずつ代入しながら以下の処理を繰り返します。
2. 処理対象シートの使用範囲のセルを、SpecialCellsメソッドとxlCellTypeConstants引数を使って取得し、aaaaaallRangeaaaaa変数にセット。
3. 取得したセル範囲から、For Each文とMergeCellsプロパティを使って結合セルのみを抽出します。
4. 結合セルの1つ上のセルをOffset関数で取得し、aaaaaueセルちaaaaa変数にセットします。
5. 結合セル全体のMergeArea.Valueプロパティに、aaaaaueセルちaaaaaa変数の値を設定します。
こうすることで、ブック内の全シートについて、結合セルにその上のセルの値が入力されます。
まとめ VBAマクロで結合したセルに値を入れる方法(Range、Cellsの使い方)【MergeArea、Value、Offset】
ここでは、VBAマクロで結合したセルに値を入れる方法(Range、Cellsの使い方)【MergeArea、Value、Offset】について確認しました。
マクロの処理に慣れ、さらに快適な生活を送っていきましょう!