Excel 2016。ハイパーリンク セルをテキストにするにはどうすればよいですか?

Excel 2016。ハイパーリンク セルをテキストにするにはどうすればよいですか?

すべてハイパーリンクであるテキストの列があります。テキストと URL を別のフィールドにコピーしたいです。

例えばセル(A1)には「Apple」(ハイパーリンク)があります。http://www.apple.com

DとEに値を入れたい

D1には「Apple」が含まれる

E1にはURLが含まれるhttp://www.apple.com

Function GetURL(HyperlinkCell As Range)
    GetURL = Replace(HyperlinkCell.Hyperlinks(1).Address, "file:", "")
End Function

私はこれをThisWorkbook(VBA)で試してみましたが、次のような結果が得られました。#名前?私のスプレッドシートで

答え1

関数を標準モジュール:

ここに画像の説明を入力してください

そしてそれは動作します:

ここに画像の説明を入力してください

答え2

コードを通常のモジュールに配置する必要があります。

  • VBEでプロジェクトを右クリックします
  • 挿入: モジュール
  • (オプション)モジュールにもっと分かりやすい名前を付ける

そこにコードをカット/ペーストしてください。これで問題なく動作するはずです。

意図をもう少し明確にするために、関数ヘッダーを明示的に関数として宣言しPublic(何も変更しないとは言いませんが、暗黙的に であると想定する人もいますPrivate)、戻り値の型を に設定することで拡張できますString

Public Function GetURL(HyperlinkCell As Range) as String

Hyperlink プロパティには文字列のみが含まれるため、UDF で明示的に指定しても問題はありません。

関連情報