数式のハイパーリンクを青文字・下線付きにする方法。編集状態からEnterで書式が付くのを一括で。

Excel

VBAで『セル.Formula=セル.Formula』と書くとできました。そのやり方とコード例です。

ハイパーリンクに書式がつかない

ExcelでCSVを開いたりテキストを貼り付けたりすると、ハイパーリンクに書式が付きません。

たとえば、以下の数式をセルに貼り付けても黒文字のままです。

=HYPERLINK("https://search.yahoo.co.jp/")

リンクとしては機能しますが、できれば青文字・下線付きにしたい場合があります。

反応をうながす

セルを編集状態にしてからEnterを押せば書式が付きますが、それと似たようなことが数式の自己代入でできました。

コード例

VBAで一括処理するコードです。

Sub 数式を自己代入()
    Dim a As Range

    For Each a In ActiveWindow.RangeSelection
    
        'セルが数式であれば
        If a.HasFormula Then

            '数式を自己代入
            a.Formula = a.Formula
        End If
    Next a

End Sub

問題のセルを選択してから実行すると、選択範囲のハイパーリンクにひとつずつ書式がつきます。

https://search.yahoo.co.jp/ これが

https://search.yahoo.co.jp/ こうなります

訪問済みのリンクが紫色に変わるところもばっちりです。

処理を中断するときは、Ctrlキーを押しながらBreakキーを押します。選択範囲が広すぎて終わらない時に有効です。

以上です

以下は補足です。

コードの説明

ActiveWindow.RangeSelectionで選択範囲のセルを取得して、For Eachでひとつずつセルを取り出しています。Formula(フォーミュラ)はセルの数式部分です。

オートコレクトがオフでも大丈夫

数式のハイパーリンクに関しては、オートコレクトの設定に関係なく書式がつくようです。編集状態からEnterを押すのでも、VBAで数式を自己代入するのでも、書式が付きました。

オートコレクトの設定とは、『Excel のオプション』⇒『文章校正』⇒『オートコレクションのオプション(A)…』⇒『入力オートフォーマット』⇒『入力中に自動で変更する項目』⇒『インターネットとネットワークのアドレスをハイパーリンクに変更する』のチェックボックスのことです。

スタイルで設定する方法

ハイパーリンクの書式は『セル.Style = "ハイパーリンク"』で設定することもできます。

ハイパーリンクのスタイルは、セルに『http://』や『=hyperlink("")』を入れた時点で追加されます。まっさらな状態のExcelには存在しません。『ホーム』タブから『スタイル』の欄を見ても見つかりませんでした。

もしハイパーリンクのスタイルがない状態で実行すると、以下のエラーが発生します。

実行時エラー '450':

引数の数が一致していません。または不正なプロパティを指定しています。

なので、汎用的に使う場合はその時の対策も追加しておくといいかもしれません。

スポンサーリンク
シェアする(押すとSNS投稿用の『編集ページ』に移動します)
フォローする(RSSフィードに移動します)
スポンサーリンク
シラベルノート
タイトルとURLをコピーしました