【VBA】罫線を除いて貼り付け(ペースト)するマクロ

目次

はじめに

Excelでせっかく綺麗に書式を整えたレポートに、別の場所からコピーしたセルの太い罫線が貼り付けられてしまい、デザインが崩れてしまった…という経験はありませんか? 😥

「形式を選択して貼り付け」から「罫線を除くすべて」を選ぶのも一つの手ですが、この操作を頻繁に行う場合は少し面倒です。

VBAでマクルを作成しておけば、この「罫線を除いて貼り付け」をワンクリックで実行できるようになり、作業の小さなストレスを解消できます。


罫線以外を貼り付けるVBAサンプルコード

以下のマクロは、現在クリップボードにコピーされている内容を、アクティブセル(現在選択されているセル)に「罫線を除くすべて」のオプションで貼り付けます。

完成コード

' クリップボードの内容を、罫線を除いてアクティブセルに貼り付ける
Sub PasteAllExceptBorders()

    ' 貼り付け先のセル範囲が選択されているか確認
    If TypeName(Selection) <> "Range" Then
        MsgBox "貼り付け先のセルを選択してください。", vbExclamation
        Exit Sub
    End If

    ' 「罫線を除くすべて」のオプションで貼り付けを実行
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders
    
    ' コピーモードを解除(点線の囲みを消す)
    Application.CutCopyMode = False

End Sub

使い方

  1. 通常通り、コピーしたいセル範囲を選択してコピーします(Ctrl + C)。
  2. 貼り付けたい先のセルを選択します。
  3. VBE(Alt + F11)を開き、標準モジュールに上記のコードを貼り付け、PasteAllExceptBorders マクロを実行します。
  4. 値、数式、書式はそのままに、罫線だけが除かれた状態で貼り付けられます。

コードの解説

Selection.PasteSpecial Paste:=xlPasteAllExceptBorders

この一行が処理の核心部分です。

  • Selection: 現在選択されているオブジェクト(この場合はセル範囲)を指します。
  • .PasteSpecial: 「形式を選択して貼り付け」を行うためのメソッドです。
  • Paste:=xlPasteAllExceptBorders: PasteSpecial の中でも、具体的にどの形式で貼り付けるかを指定する引数です。xlPasteAllExceptBorders は、VBAに組み込まれている定数で、「罫線を除くすべての情報」を意味します。

Application.CutCopyMode = False

貼り付け操作が終わった後、コピー元のセル範囲が点線で囲まれたままになる「コピーモード」を解除するための命令です。これにより、Escキーを押したときと同じ状態になります。


まとめ

今回は、VBAを使って「罫線を除いて貼り付け」をスマートに行う方法をご紹介しました。

このマクロをクイックアクセスツールバーに登録しておけば、自分専用の「罫線なし貼り付けボタン」として、いつでも手軽に利用できます。

日々の資料作成でコピー&ペーストを多用する方は、ぜひこのマクロを導入して、作業の効率化を実感してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次