• 締切済み

Excell:ユーザー定義関数で、HyperLinkを返したい

エクセルで、ユーザー定義関数を作成しています。 戻り値をHyperLinkにしたいのですが、可能でしょうか? 指定したセルの値を参照して、動的にURLを 作成するところまでは、できたのですが、HyperLinkとして セルに書き戻す事ができません。 下記のように文字列になってしまいます。 =HyperLInk("http://hoge.php?var=10","●") ↑を、リンクとして機能させるには、どうすれば 良いかご存知でしたら、教えて下さい。 ※一旦URLだけを文字として表示させ、  その上に、HyperLink関数をかぶせれば、  目的が達成できることはわかっていますが、  それでは、使い勝手が悪いのです。 どうぞ、よろしくお願い致します。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

>戻り値をHyperLinkにしたいのですが、可能でしょうか? セルの保持する値としてHyperLinkを保持することはできないので不可能だと思います。 実際やってみたら、#valueエラーになってしまいました。 マクロ(sub)で適当なセルにハイパーリンクを作ることはできると思いますが、functionではムリです。 HyperLink関数をそのまま使えばいいと思うのですが、あえてユーザー定義関数で同等の関数を作らなければならない理由はなんですか?

kohey_99
質問者

補足

ご返答をありがとうございます。 >HyperLink関数をそのまま使えばいいと思うのですが、 >あえてユーザー定義関数で同等の関数を作らなければ >ならない理由はなんですか? それは、使い勝手のためです。 例えば、A1に、100という値が入っていて、 C1に、100から推察されるURLへのリンクを作りたい時、  1)B1に、ユーザー関数で、飛びたいURLを作成する。  2)C1に、HyperLink関数を埋め込む。 とすると、2つの手間が発生します。 1)と2)の処理を同時に行えれば、ベストなのです。 ちなみに、マクロは次善の策であり、 できれば、ユーザー関数で対応したいと思っています。   また、引数として指定したセル(この場合、A1)は、 リンクにすることができましたので、 ユーザー定義関数の中で、「実行中のセル」が 取れたら、問題は解決するのかも知れません。 以上

関連するQ&A

  • Hyperlink関数をクリックしてくれるマクロ

    こんにちわ! どなたか教えてくださいませんか? EXCELのセル“A1”にHyperlink関数が入れてありまして、 隣のセル“B1”に入れた文字を組み込んで、URLを生成し、リンクを作るようになっています。 こんな感じです。   =Hyperlink("http://●●●"&[B1]&"●●●/") それで、B1に文字を入れたら、自動的にそのリンク先を開くように、 つまりは、A1にできたリンクをわたしの代わりにクリックしてくれるようなマクロを作りたい のですが、どうすればいいでしょうか? いろいろやってみたのですが、どれもエラーになってしまいまして。 どうかよろしくお願いいたします。

  • Hyperlink関数をクリックしてくれるマクロ

    どなたか詳しい方教えていただけないでしょうか? ExcelのセルA1に以下のhyperlink関数を入れています。 =HYPERLINK(″#C″&MATCH(B1,C:C),″クリック″) 隣のB1に入れた数字を元にC列に存在する同じ数字先にジャンプするように関数を作ってます。 A1にできたリンクをクリックしたは、B1に入力されているものと同じ数字先のC列に飛ぶようにマクロを組みたいのですが、どうしたらいいでしょうか? ハイパーリンク関数がマクロに組み込めないのと色々調べてみましたがうまくいかないのでお手上げです。 どなたか詳しい方教えていただければと思います。 どうぞよろしくお願いします!

  • マクロにてHYPERLINKのアドレスの取得方法を教えてください。

    マクロにてHYPERLINKのアドレスの取得方法を教えてください。 HYPERLINK関数を駆使してリンクを作っています。 =HYPERLINK(CELL("address",INDEX([○○○.xls]△△△シート!$1:$65536,MATCH("文字列",[○○○.xls]△△△シート!$B:$B,),MATCH("文字列",[○○○.xls]△△△シート!4:4,))),表示文字) という感じで別Excelファイルの行と列をMATCH関数を使いアドレスを作成しています。 出来たセルにマウスカーソルを持っていくと [○○○.xls]△△△シート!$AJ$114 アドレスが表示されます。 クリックするとちゃんと飛べます。 アドレスの表示を調べてみたところ Range("A1").Hyperlinks(1).Address というように記述する事で取得出来ると書かれていたので早速試してみたのですが インデックスが有効範囲にありません。と表示されてしまいます。 アドレスを取得するにはどうしたらいいのでしょうか?

  • 書式ごとコピーするユーザー定義関数をつくりたい

    VBA初心者です。 ExcelにてVBAを使用し、書式ごとコピーができるユーザー定義関数の作成を考えております。 理想としては例えば、A1に =GetTxt(INDIRECT("G"&B1)) と入力すれば、B1の値に応じてG列の任意の行のセルを引数として指定でき、 指定先のセルを書式ごとA1にコピーできるGetTxt()関数を定義したいのですが、 具体的にどのようにFunctionプロージャを記述すればいいでしょうか? (コピー元のセルをB1に入力する値に応じて随時自動で変えたいと考えております) 単純に値を返すだけのVBAコードならわかるのですが、 ワークシート上で関数として使用でき、かつ書式なども指定する方法がわかりません。 もしワークシート上での関数としての実行が困難であれば代替案でも構いませんので、 宜しければ何卒ご教示お願い申し上げます。

  • エクセルのhyperlink関数を使って、次のように入力したいと思って

    エクセルのhyperlink関数を使って、次のように入力したいと思っています。 =HYPERLINK("http://www.aaa.com/1",1) =HYPERLINK("http://www.aaa.com/2",2) =HYPERLINK("http://www.aaa.com/3",3) こういった感じで、連続いくつも入力します。 関数のカンマの後ろの数字については、A1+1 と入力して、セルの右下にマウスを移動させそこからドラッグすればすぐに入力できますが、カンマの前のURLの数字の部分についても連動させたいのです。 どの様にすればいいのでしょうか?

  • エクセル2007の、ユーザー定義について

    エクセル2007の、ユーザー定義について セル範囲に、文字列、0、1、0.5 の値がランダムに、複数あります。 この範囲に、0を表示させないように、ユーザー定義にて、 「#;-#;"";@」 を設定したところ、0は消えたのですが、0.5が1と表示されます。 元々の1、文字列はそのままです。 0.5(値を計算に使います)を0.5と表示させたまま、0を表示せず、1、文字列はそのままに 表示させるにはどう設定すればよいでしょうか? 良い方法があれば、よろしくお願いいたします。

  • EXCEL HYPERLINKの関数表示を文字に変える方法?

    EXCEL2002を使っています。 現在A1のセルに=HYPERLINK("C:\My Documents\1.xls")という式を入れています。A2のセルには左記式と同じでファイル名が2.xls、以降順番にA2000(2000.xls)まで同様の式を入れています。 現在、A1からA2000のセルまで関数の式が表示されてしまっているのですが、できれば関数の式は見せずに任意の文字を表示させ、さらにその文字をクリックすればリンクがはられるようにしたいのです。 文字を先に入力してメニューの挿入→ハイパーリンクとやれば希望通りの物ができるのですが、2000件ものマニュアル作業は避けたいと思います。 HYPERLINKの式を先に入力した場合でクリックのできる文字表示にする良い方法はないでしょうか?

  • EXCELのHYPERLINK関数の”文字列”について教えてください!

    HYPERLINK関数の「文字列」について 調べましたがさっぱりわからず、悩んでいます。 現在Sheet1のB1に =HYPERLINK("#Sheet"&ROW(A2)&"!A1",Sheet2!A1)  というように、Sheet2のA1にジャンプし、 Sheet2のA1が表示されるように、式を入力しました。 Sheet2のA1には文字が書かれています。 Sheet1のA1には何も書かれていません。 その式を連続コピーして、 B2を押すとSheet3のA1にジャンプし、Sheet3のA1の文字を表示する、 B3を押すとSheet4のA1にジャンプし、Sheet4のA1の文字を表示する、 というようにしたいのですが、 コピーすると =HYPERLINK("#Sheet"&ROW(A3)&"!A1",Sheet2!A2) =HYPERLINK("#Sheet"&ROW(A3)&"!A1",Sheet2!A3) このように、Sheet2のA2の値を返す というように コピーされてしまいます。 理想としては =HYPERLINK("#Sheet"&ROW(A3)&"!A1",Sheet3!A1) =HYPERLINK("#Sheet"&ROW(A3)&"!A1",Sheet4!A1) このように、A1は変わらず、シートの数字が1つずつ増えてほしいのです。 多少の関数はわかりますが、マクロはさっぱりわかりません。 関数を使うことで、こんなことは可能なんでしょうか? 説明が下手なんですが、どなたかわかられる方、教えてください(@_@)

  • ユーザー定義関数で、選んだセルの下のセルの参照方法

    簡単なユーザー定義関数を作っています。 Function TEST(氏名) TEST = End Function 氏名のセルを選んで、その下のセルの値を参照したいのですが、どのようにしたら良いのでしょうか? OFFSET関数を使いたくも、選んだ氏名のセルをどう使うのかわかりません。 宜しくお願いします。

  • Excelのユーザー定義関数

    シート名の一部とセルの値が一致したらLOOKUP関数をかえす関数を作成したいのですが… 例として。。。 シート名:20020301売上表、セルA1:2002/3/1の値があります。 シート名の"01"とA2の日付"1日"が一致したら、セルA2にLookup関数をかえす関数を作成したいのですが。。。 よろしくお願いします

専門家に質問してみよう