Excel VBAで各シートのA1セルにハイパーリンクの設定方法 質問と回答(Q&A)  

こんにちは ゲスト さん | ログイン | ヘルプ | okyuu.com Feed Feed

総合トップ / 質問 / プログラミング 質問 / アルゴリズム 質問 / Excel VBAで各シートのA1セルにハイパーリンクの設定方法
okyuu.comは、2010年9月21日正午をもってサービス終了とさせていただきます。また、2010年6月21日正午以降の投稿およびコメント、回答ができなくなりますのでご注意ください。

0

0人
の評価
Excelのシートの状態として・・・
  • シートは複数あります。
  • 最初のシート名は一覧
  • そのほかのシートはその一覧シートからハイパーリンクで移動できるようになっている。
    • 「 ほげ1」、「ほげ2」見たいなシート名です。
タイトルの通り各シートのA1セル(一覧シートは除く)に一覧シートへのハイパーリンクを設定するVBAを考えているのですが、中々いい案、処理が浮かばないのが現状です。 ちなみにVBAに関しては全くの初心者です。 ご教授いただけると嬉しいです。

  • 回答数 (7)
  • クリップ数 (0)
  • アクセス数 (5356)
  • Tag 

  • 回答

0

0人
の評価
2番目のシートを選択して頂いて、下記のマクロを実行頂くと2番目以降のシートのA1セルに「一覧」シートへのハイパーリンクを設定します。
べた書きですが。。。


コピペする ブログに貼る
Sub Macro1()
'
' Macro1 Macro
'

'
    On Error GoTo errorend
    
    Do While True
        Range("A1").Select
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="一覧!A1", TextToDisplay:="一覧へ"
        
        ActiveSheet.Next.Select
    Loop

errorend:
    
        
End Sub

0

0人
の評価
> bekobekohekomiさん
コメントありがとうございます。
早速、このVBAのコードを実行してみました。
実行したところ、2番目のシートにはハイパーリンクが作成されたのですが、それ以降のシートには作成されませんでした。
シート1つ1つにこのVBAを登録?(Visial Basic Editorの左に表示されるシート分ということ)しないといけないのでしょうか?
試しに登録したところ1つ1つのシートでこのコードを実行したところ一覧へのハイパーリンクが作成されました。

ご確認ください。

0

0人
の評価
もしかして3番目のシートを非表示にされてますか?
ActiveSheet.Next.Selectで次のシートをアクティブにさせているだけなので、
非表示にしていると動かないですね。

これで表示しているシートだけハイパーリンクを埋め込みます。
またべたがきですが、「一覧」のシートだけ除外するようにしています。
コピペする ブログに貼る
Sub Macro1()
'
' Macro1 Macro
'

'

    For Each s In Sheets
        If Sheets(s.Name).Visible = True And s.Name <> "一覧" Then
            s.Select
            Range("A1").Select
            ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="一覧!A1", TextToDisplay:="一覧へ"
        End If
    Next s

End Sub


0

0人
の評価
> bekobekohekomiさん
3番目のシートは非表示にしていません。
再度このコードで試しました。
今度は「400」と表示され、エラーになってしまっています。

0

0人
の評価
こんなではだめですか?
※既に「シート一覧」というシート名が存在する場合、エラーになります。


コピペする ブログに貼る
Sub create_list()
    Dim wsList As Worksheet
    Dim wsTmp As Worksheet
    Dim i As Long
    
    ' 一覧用シート作成
    Const LIST_NAME As String = "シート一覧"
    Set wsList = ActiveWorkbook.Worksheets.Add(Before:=ActiveWorkbook.Worksheets(1))
    wsList.Name = LIST_NAME

    ' セル行数セット
    i = 1
    
    ' 全てのシートに対しての処理
    For Each wsTmp In ActiveWorkbook.Worksheets
        ' 一覧シート自体は処理から除く
        If wsTmp.Name <> LIST_NAME Then
            ' シート名
            wsList.Range("A" & i).Value = wsTmp.Name
            
            ' ハイパーリンク
            wsList.Hyperlinks.Add wsList.Range("A" & i), "", "'" & wsTmp.Name & "'!A1", , wsTmp.Name
            
            ' セル行数追加
            i = i + 1
        End If
    Next
    
End Sub

0

0人
の評価
一覧から各シートではなく、各シートから一覧なんですね。
失礼しました。逆ですね。
こんな感じでできるのではないかと。


コピペする ブログに貼る
Sub create_links()
    Dim wsTmp As Worksheet
    Const LIST_NAME As String = "一覧"

    ' 全てのシートに対しての処理
    For Each wsTmp In ActiveWorkbook.Worksheets
        ' 一覧シート自体は処理から除く
        If wsTmp.Name <> LIST_NAME Then
            wsTmp.Range("A1").Value = LIST_NAME & "へ"
            wsTmp.Hyperlinks.Add wsTmp.Range("A1"), "", "'" & LIST_NAME & "'!A1", , LIST_NAME & "へ"
        End If
    Next
End Sub

0

0人
の評価
> kazさん
コメントありがとうございます。
早速VBAのコードを実行してみました。

一覧のシート以外のシートに一覧へのハイパーリンクが作成されました!
ありがとうございます。

これでもやもやがとれました。
コメントいただいた御二方ありがとうございますm(_ _)m

0
2
回答
1
3
回答
1
2
回答
guest_photo
  

カテゴリ

特集

[重要]okyuu.comサービス終了のお知らせ [重要]okyuu.comサービス終了のお知らせ
okyuu.comは、2010年9月21日正午をもってサービス終了とさせていただきます。また、2010年6月21日正午以降の投稿およびコメント、回答ができなくなりますのでご注意ください。
フリーターからGoogle API Expertへ 松尾貴史さん フリーターからGoogle API Expertへ 松尾貴史さん
音楽で独立することを目指していた松尾貴史さん。いまではGoogle App Engine API Expertとして活躍するエンジニアだ。
ソフトウェアを公開するのが楽しい 岡野真也さん ソフトウェアを公開するのが楽しい 岡野真也さん
ソフトウェアを公開するのが面白くてたまらない。作っては公開というのが彼のやり方だが、若きエンジニアにとってはそれくらいがちょうどいいのかもしれない。
コンピュータは世界を広げる実験道具 西尾泰和さん コンピュータは世界を広げる実験道具 西尾泰和さん
プログラミング、サイエンス、デザイン マルチな彼にとって、コンピュータは未知の世界を広げるための道具であることに変わりはない。今後の展開が楽しみだ。
理想のOS開発に人生を賭ける 川合秀実さん 理想のOS開発に人生を賭ける 川合秀実さん
OSASK計画代表の川合さんは、人生の1秒を惜しみながら独自OSの開発にいそしむ。
「楽しむ」それが豊かなエンジニアになるコツ 坂井恵さん 「楽しむ」それが豊かなエンジニアになるコツ 坂井恵さん
日本MySQLユーザ会の副代表を務める坂井恵さん。技術の現場で会社運営に興味を持ち、独立起業の道を選んだエンジニアだ。
夢はエンジニアに強い影響を与える本を書くこと 松信嘉範さん 夢はエンジニアに強い影響を与える本を書くこと 松信嘉範さん
ソニーの情報シスから日本を代表するMySQLのコンサルタントに。彼が魅せられたオープンソースの世界とは?
お友達紹介機能をつかってポイントGET! お友達紹介機能をつかってポイントGET!
お友達を招待してみんなでokyuuポイントをGETしよう!
オープンソースの活動「すごく、いい」 前坂徹さん オープンソースの活動「すごく、いい」 前坂徹さん
オープンソースプロジェクトで活躍する若き新鋭。コミュニティ活動の感想を尋ねると「すごく、いい」と満面の笑み。
コンピュータは創造力を刺激する 奥一穂さん コンピュータは創造力を刺激する 奥一穂さん
天才エンジニアとしての国際的な評価も高い奥一穂さん。世間からのスマートだとの評価には「自分は広く浅くだから」とさらり。
25歳からプログラミング「泣きながら覚えた」 庄司嘉織さん 25歳からプログラミング「泣きながら覚えた」 庄司嘉織さん
25歳でプログラマーに転向した。いまやjava-jaを立ち上げるなど精力的なエンジニアだ。
Rails勉強会@東京は“キャスト”の気持ちで 諸橋恭介さん Rails勉強会@東京は“キャスト”の気持ちで 諸橋恭介さん
大学時代、偶然手にしたMacが諸橋さんにITエンジニアの道を開いた。
"シャイモード"機能を活用しよう! "シャイモード"機能を活用しよう!
こんな質問してもいいのかな?そんなときは"シャイモード"で投稿!
RX-7とサーバ運用の意外な共通点 並河祐貴さん RX-7とサーバ運用の意外な共通点 並河祐貴さん
Amazon EC2を巧みに使いこなすTIS/SonicGardenの並河さん。「腕一本で食べていきたい」とITエンジニアを目指した。
「ブラックボックスは不安でしょ」 ひろせまさあきさん 「ブラックボックスは不安でしょ」 ひろせまさあきさん
エンジニアが楽しくて仕方がない。オープンソースを組み合わせてシステムを作り上げるのが彼の矜持のようだ。
Perlの地位向上を胸に 牧大輔さん Perlの地位向上を胸に 牧大輔さん
endeworksの牧大輔さんは社団法人JPAを立ち上げ、Perlの企業利用を促進したいという。
偶然からCTOへ ライブドアCTO池邉智洋さん 偶然からCTOへ ライブドアCTO池邉智洋さん
池邉智洋さんはライブドアCTOの技術メンバーを先頭で率いる。「まずはやって見せることも大事」と語る。