• ベストアンサー

エクセルのオートシェイプのテキストボックスにハイパーリンクの設定をする方法

テキストボックスに入力した文字をクリックするとその文字を含むセルにリンクするというマクロはできるのでしょうか?通常のハイパーリンクだと指定したセルに飛びますが、それだとちょっと困る事があるので「指定した文字を含む」という条件でマクロかなにかでできたら便利なんですが、なにかいい方法があれば教えてください。

  • sreds
  • お礼率76% (13/17)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

> NM = ActiveSheet.Shapes.Range(Application.Caller).Name マクロを単独で実行されたようですね。 前回記述したマクロは、テキストボックスに登録して使います。 マクロを記述したら、テキストボックスの右クリックから "マクロの 登録"を選択して SearchByTxtbox を指定します。 その後、テキストボックスをクリックしますと、ボックス内に入力さ れている文字を含むセルを検索します。 続けてテキストボックスのクリックを繰り返すと、順次次のセルを検 索します。 テキストボックス内の文字列を書き換えてクリックすると、新しい文 字列の検索に入ります。 テキストボックス内の文字列は、30字までです。 とりあえず、テキストボックスは1つだけという前提で、複数のテキ ストボックスで交互に検索する場合は、このままでは使えません。

sreds
質問者

お礼

うまくできました!完璧です。ご指導ありがとうございました。

その他の回答 (4)

  • izmlz
  • ベストアンサー率55% (67/120)
回答No.5

 エラーになるとのことですが、テキストボックスのはじを右クリック-[マクロの登録]で、テキストボックス自体にマクロを登録されているでしょうか?もしかして、テキストボックスに文字列は入力されているけれども、コマンドボタンにマクロが登録されていることはないでしょうか?  もし、上記が該当しないのであれば、「オートシェイプのテキストボックス」とあるので、同じ「テキストボックス」だとは思うのですが、念のため。どのようにして作成した「テキストボックス」なのでしょうか?当方では、[図形描画]ツールバーの[テキストボックス]をクリックして作成しています。  それから、「テキストボックスにハイパーリンクの設定をする方法」とのことだったので、通常のハイパーリンクの運用と同様に、 (1)行き先は一箇所。 (2)異なる文字列が入力された複数のテキストボックスがある。 (3)ハイパーリンクがいちいちハイパーリンク先を変更することがないように、テキストボックスのテキストを変更することはない。 という前提で考えていました。  もし、一つのテキストボックスで対応、すなわちキーワードをしばしば変更するのであれば、テキストボックスを使用するのではなくて、「キーワード入力用のセル」+「コマンドボタン」の方が操作がだんぜん楽で良いんじゃないでしょうか?テキストボックスのクリックでマクロを実行するようになっていて、テキストボックスのテキストを変更するのは、右クリックして[テキストの変更]を選んでと面倒です。

sreds
質問者

お礼

質問がわかりづらくてすみません。テキストボックスの中にマクロは登録してます。テキストボックスも間違いなく同じものです。文章の一部にハイパーリンクの設定をしたかったので、、「キーワード入力用のセル」+「コマンドボタン」とはやりたことが違うかと思います。 せっかく教えていただいたのにうまくできず申し訳ありません。

回答No.3

> やってみましたが「指定したパラメーターに無効な値が含まれています」 こちらではエラーは発生しないのですが、 どの時点でエラーになりますか。 また、エラーメッセージが表示されるダイアログで[デバッグ]をクリックした場合、 モジュールのどの部分が反転していますか?

sreds
質問者

お礼

↓この部分でエラーが出ました。 NM = ActiveSheet.Shapes.Range(Application.Caller).Name ちなみにこれは文字をクリックして実行されるマクロですか? NMとsrchはすべて変えるのでしょうか?

回答No.2

ハイパーリンクにしてもマクロにしても、テキストボックス内の文字列を 変更するのに右クリックを使わなければならないので面倒ですね。 テキストボックスに、次のマクロを登録するのはいかがでしょうか。 Sub SearchByTxtbox()  Dim NM, srch, rng  NM = ActiveSheet.Shapes.Range(Application.Caller).Name  srch = Replace(ActiveSheet.Shapes(NM).TextFrame.Characters.Text, Chr(10), "")  If srch = "" Then Exit Sub  Select Case NM    Case Is <> srch    Set rng = ActiveSheet.Cells.Find(What:=srch, SearchDirection:=xlNext)    If rng Is Nothing Then     MsgBox "該当するセルがありません!"     Exit Sub    End If    Cells(rng.Row, rng.Column).Select    ActiveSheet.Shapes(NM).Name = srch   Case Else    Cells.FindNext(After:=ActiveCell).Activate  End Select End Sub NM:テキストボックスの名前、srch:テキストボックスに記述された検索文字列 マクロを登録したテキストボックスに記述された文字列をみて、 ・空白の場合   何もしないでマクロを終了します。 ・テキストボックス名と異なる場合   新たな検索文字列が指定された場合です。   文字列を検索してヒットしたら、テキストボックスの名前を、ボックス内に   記述された検索文字列と同じにします。 ・テキストボックス名と同じ場合   テキストボックスに記述されている検索文字列で「次」を検索します。

sreds
質問者

お礼

ご回答ありがとうございます。やってみましたが、「指定したパラメーターに無効な値が含まれています」とエラーが出てしまいました。 どうすればいいでしょうか?

  • izmlz
  • ベストアンサー率55% (67/120)
回答No.1

↓こんな感じでいかがでしょうか? Sub テキスト1_Click()  Dim myStr As String  Dim myRng As Range  myStr = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text  Set myRng = Cells.Find(myStr)  If myRng Is Nothing Then   MsgBox "「" & myStr & "」は入力されていません"  Else   myRng.Activate  End If  Set myRng = Nothing End Sub

参考URL:
http://www2.odn.ne.jp/excel/waza/macro.html
sreds
質問者

お礼

ご回答ありがとうございます。 「型が一致しません」というエラーが出ましたが、そのままマクロをペーストするだけではできないのでしょうか?

関連するQ&A

  • セルからテキストボックスへ

    Excel2003の操作でお伺いしたい事があります。 通常テキストボックスにハイパーリンクを挿入すると 同じシート内のセルへジャンプする設定をする事ができますが 逆にセルをクリックすることによって 同じシートのテキストボックスへジャンプする事は出来ますでしょうか? ハイパーリンク、もしくは他にそのような事が 出来る機能がありましたら是非教えてください(*- -)(*_ _)ペコリ

  • エクセル ハイパーリンクについて

    エクセル ハイパーリンクの設定について教えてください。 Excel のハイパーリンクで「(1)このBook(ファイル)の、(2)このSheetの、(3)このセルに」リンクするという 設定方法は分かるのですが、(3)のこのセルに、という部分で「この文字が入力されているセルに」リンク という細かい設定は出来るのでしょうか? 例) A1をクリックすると、別ファイル別シートの「確認」という文字列が入力されているセルにリンクする。 該当のセルが複数ある場合はどのセルでもOK。(出来れば一番上にあるセルがベストですが) 色んな書籍を漁ってみたのですが、とうとう分かりませんでした。 エクセルに詳しい方、どうか宜しくお願い致します。

  • オートシェイプのテキストの追加

    エクセル2003を使用しています。 オートシェイプで四角い枠を作り「テキストの追加」 を行うとテキストボックスのように文字を書き込める状態 になりますよね。 この状態を解除してただの四角い枠の状態に戻せないでしょうか? 仕事で報告書を作成しているのですがこの状態だと テキストボックスの後ろにあるセルをクリックしようとすると テキストボックスの「テキストの編集」になってしまいます。 昨日、自宅のパソコン(エクセル2007)で開いたときは こんなことなかったのですが、今会社のパソコンで開いて 編集しているのですがテキストボックスの後ろのセルに 入力されている文字を変更できなくて困っています。 (テキストボックスを消すか移動させればいいんですが 面倒ですし…)

  • エクセルのハイパーリンクが飛ばない

    エクセルのセルに文字を入力し、その文字をクリックすると YOUTUBEのある動画に飛ぶようにしようと思い ハイパーリンクの設定を行いましたが 同じ方法でいくつかのセルに設定し、ちゃんとリンクが飛ぶものも ありますが、殆どがその文字をクリックするとブラウザーが 立ち上がって 「お使いのブラウザーは最新です」という訳の 分からないメッセージが出てきます。 ハイパーリンクのURL間違いかな? と思い そのセルで右クリックして、ハイパーリンクの設定を押して 下側のアドレスという項目を確認すると URL自体は間違えてないです。 確かめる為に、そのURLをコピーしてブラウザーのアドレスの所に コピペしたらちゃんと動画は再生されました。(URL間違いではない) それでは何がおかしいのでしょうか? お詳しい方教えてください よろしくお願いします。

  • エクセルのハイパーリンクの設定方法

    エクセルのセルにハイパーリンクを設定し、ネットワークドライブ上にある別のエクセルファイルに対しシートとシート内のセルを指定してリンクを貼りたい。 ネットで調べて、ファイルを指定するところまではできましたが、シート、シート内のセル指定の方法が分かりません。 アドバイスください。

  • ハイパーリンク設定をマクロに記録したい(エクセル2000)

    フォルダ内のファイルの一覧をエクセルで作り、目次のようにハイパーリンクでジャンプするようにします。1フォルダ、1シートとします。 エクセルの文字列を選択して、ハイパーリンク設定画面で、リンク先のフォルダを指定するところまでをマクロに記録し、ショートカットキーに登録して作業を早くしたいのです。 ところが、リンク設定が完了するまでマクロ記録の終了ができません。フォルダ指定までのマクロでないと他の文字列に使えません。 リンク設定の途中でマクロ記録を終了する方法はないでしょうか?

  • VBAのテキストボックスについて

    VBAのテキストボックスについて質問させてください。 テキストボックス内の文字列をハイパーリンクにする事は可能でしょうか? 具体的にはテキストボックス内のURLをクリックすると ブラウザが立ち上がり、URLのサイトにアクセスすると言ったものです。 すごく平凡なんですけど、方法が見つからなかったのもで・・・。 どなたかご教授お願いします。

  • エクセルのテキストボックスに関するマクロ

    テキストボックスが100個あって(番号は1から100)、文字が入力されているものと空白のものが混ざっています。 文字が入力されているテキストボックスに関しては内部を赤く塗りつぶす、というマクロを教えて頂きたいのですが。

  • EXCELでテキストボックスを選べない

    EXCELでのシートで セルにはデータが入っています セルはそれぞれクリックできます シートの真ん中に テキストボックス(四角い図形の中に テキストが入力されているので) があり それをクリックしようとすると ○の中に /が入っている 警告のようなものが出てきて テキストボックスを選べません  シートは保護されていないようです どんな設定がされていますか

  • EXCELで任意の文字列に特定のハイパーリンクを指定する方法

    EXCELで任意の文字列に特定のハイパーリンクを指定する方法を探しています。 セルに特定の文字が入っていた場合に 指定した固定のurlをハイパーリンクで指定する事は 可能でしょうか。 例 セル 「ヤフー」 リンク先 「​http://yahoo.co.jp​ 」

専門家に質問してみよう