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':
引数の数が一致していません。または不正なプロパティを指定しています。
なので、汎用的に使う場合はその時の対策も追加しておくといいかもしれません。