セルとシートの操作(Excel VBA入門)

投稿日:2026-01-07

音声

※ AI音声で読み上げます

目次

  1. セルの値の読み書き(Value、Text、Value2の違い)
  2. セルの書式設定(Font、Interior、Borders)
  3. 行・列の挿入と削除
  4. セルのコピー・貼り付け(Copy、PasteSpecial)
  5. セルのクリア(Clear、ClearContents、ClearFormats)
  6. 注意(ここだけ)

セルの値の読み書き(Value、Text、Value2の違い)

今回できるようになることとして、セルから値を取り出して書き戻す基本操作と、Value・Text・Value2の使い分けが理解できるようになります。最小マクロ:以下はワークシートのA1に値を書き、B1の表示(文字列)を読み取る例です。貼り付け場所:標準モジュールに入れてください。

Sub 最小マクロ_値の読み書き()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)
    ws.Range("A1").Value = 123        ' 値を書き込む(Valueは型変換あり)
    ws.Range("A2").Value2 = 123.0     ' Value2は日付の特殊扱いがない高速な値
    ws.Range("B1").Value = "テキスト"
    MsgBox "B1の表示: " & ws.Range("B1").Text  ' Textは表示形式での文字列
End Sub

Valueはセルの「値」を返し、表示形式に影響されて自動で型変換される場合があります。Textは画面に見えている文字列(セルが編集モードでないと正しく取得)を返し、Value2は日付の特殊扱い(Variant/Dateの差)を避けたい時に使います。

実行方法は、VBEでマクロを選んでF5、またはボタンに割り当てて実行できます。確認方法は、A1/A2/B1の中身と表示が期待どおりかを見るか、MsgBoxで確認してください。

使い分けの基準は、計算に使う数値はValueまたはValue2を選び、Value2は日付に関わる不具合を避けたい時に向いています。表示そのまま取りたい時はTextを選びます。

セルの書式設定(Font、Interior、Borders)

セルの見た目はVBAからFont(フォント)、Interior(塗りつぶし)、Borders(罫線)で操作できます。

書式は値そのものではなく見た目を変えるため、値の処理と分けて考えることが大事です。

例えば太字・色・背景・罫線を設定する簡単な例を次に示します。

Sub 書式設定_例()
    With ThisWorkbook.Sheets(1).Range("C1")
        .Value = "見出し"
        .Font.Bold = True
        .Font.Size = 12
        .Interior.Color = RGB(230, 230, 250)  ' 背景色
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
    End With
End Sub

セル全体や個別プロパティを指定することで、業務で見やすい表にできます。

書式設定は目に見えるため、作業後に印刷やPDF化したときの見栄えも確認してください。

よくあるミスとして、セルを書式だけ変えたいつもりが.Valueで値を書き換えてしまうことがあります。

元の値が消えるため、Value操作は慎重に行ってください(直し方は一つ前の保存ファイルからリロードするか、Undoが使えるうちに戻します)。

行・列の挿入と削除

行・列の追加や削除は、RangeのInsert/Deleteメソッドで行います。

行を挿入すると下のデータが下にずれるため、参照先の固定(Named Rangeやテーブル)を使うと安心です。例として2行目を挿入し、見出しを入れるコードを示します。

Sub 挿入削除_例()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)
    ws.Rows(2).Insert Shift:=xlDown
    ws.Rows(2).Range("A1").Value = "新しい行"
    ' 列の削除は ws.Columns(3).Delete のようにします
End Sub

行列操作は他のシートや外部参照に影響するので、実行前に保存(.xlsmで保存)してから行うことをおすすめします。

  • 実行方法は、マクロ実行やボタン割り当てで行えます。
  • 確認方法は、挿入後に行番号とデータの移動を確認してください。

セルのコピー・貼り付け(Copy、PasteSpecial)

コピーはCopyメソッド、貼り付けの細かな制御はPasteSpecialで行います。値のみ、書式のみ、列幅のみ、数式付きなどを選べます。次は値のみを別の範囲に貼り付ける例です。

Sub コピー貼付け_値のみ()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)
    ws.Range("D1:D10").Copy
    ws.Range("E1").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub

CopyとPasteSpecialはクリップボードを使うため、途中でユーザーのコピー操作が入ると期待どおり動かないことがあります。可能であれば、配列で値を取得してから代入する方法も検討すると、高速で安定します。

貼り付け場所は、コード内のRangeで指定するか、ActiveSheetに貼るかを明示してください。使い分けの基準は、単純な値移動はPaste:=xlPasteValuesを使い、書式も含めて移したいときはxlPasteAllを使います。

セルのクリア(Clear、ClearContents、ClearFormats)

セルの消去にはClear(値・書式・コメントを全部消す)、ClearContents(値だけ消す)、ClearFormats(書式だけ消す)があります。用途に合わせて使い分けるとデータを誤って消さずに済みます。例を示します。

Sub クリア_例()
    Dim r As Range
    Set r = ThisWorkbook.Sheets(1).Range("F1:F5")
    r.ClearContents       ' 値だけ消す
    ThisWorkbook.Sheets(1).Range("G1:G5").ClearFormats  ' 書式だけ消す
    ThisWorkbook.Sheets(1).Range("H1:H5").Clear         ' 全部消す
End Sub

操作前に保存を促すメッセージや確認ダイアログを出すと安全です。

実行方法はマクロ実行、ショートカット、ボタンのいずれでも使えます。

保存形式はマクロを含むので必ず.xlsmで保存し、開くときに「コンテンツの有効化」をして実行してください。

注意(ここだけ)

  • マクロを含むブックは.xlsmで保存し、開く際にリボンの「コンテンツの有効化」を必ず行ってください。