背景・目的

ExcelのセルにWebサイトのURLをコピペすると、そのページのタイトルが青字で、かつ下線が引かれて自動で表示される。例えば、TOHOシネマズのURL(https://www.tohotheater.jp/)をセルB2に貼り付けると、下図のようになる。

サイトへのリンクも自動で設定されるので、このセルをクリックすると、Edgeなどのブラウザが起動して、TOHOシネマズのサイトが開く。とても便利だ。

ただ、コピペすると強制的にフォントサイズが11になり、また下線も有無を言わさず引かれてしまうのが気になる。

ExcelにURLを貼り付けることが多いのだが、フォントは指定のサイズにしたいし、個人的に下線は好みじゃないので消したい。けれども、それを手作業でやるのは面倒だ。

そこで、VBA(マクロ)を使用し、ExcelにURLがペーストされたら、自動でフォントサイズを11→8とし、下線も削除されるようにしたい。

方法

VBEを開いて、プロジェクトエクスプローラーで目的のシートを選択し、右クリックして「コードの表示」をクリックする。

表示された画面上部の左側のリスト(「(General)」となっている)から「Worksheet」を選択する。

すると、自動で「Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub」が入力される。

このコードは不要なのだが、ひとまずそのままにしておく。
(ここで削除すると、リストが「(General)」に戻ってしまうため)

画面上部の右側のリストから「Change」を選択する。

すると、自動で「Private Sub Worksheet_Change(ByVal Target As Range) End Sub」が入力される。

不要な「Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub」の方は削除する。
「Private Sub Worksheet_Change(ByVal Target As Range) End Sub」の方に、以下のコードを入力する。

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target.Font
        If .Color = RGB(5, 99, 193) And .Underline <> xlUnderlineStyleNone Then
            .Size = 8
            .Underline = xlUnderlineStyleNone
        End If
    End With
End Sub

「Target」が変更されたセル、ここでいうURLがコピペされたセルになる。

もし、「Target」のフォントの色が、URLを貼り付けた時に自動設定されるこの青っぽい色で、かつ下線が引いてあれば、目的の処理が実行される。
ここでは、フォントサイズを8にして、アンダーラインをなくすようにしている。

試しに、コードを書いたシートに戻り、TOHOシネマズのURLを今度はセルB3にペーストしてみる。すると、処理が実行されて、セルB2と比較してフォントサイズが小さくなり、下線もないことがわかる。

もっとうまいやり方があるかもしれないが、一応これで目的は達成できた。

投稿時の環境

  • Windows11 Home Ver. 24H2
  • Excel for Microsoft 365 Ver. 2504