-
- stryh
- 755ポイント
- posted at:2009/08/30 08:26
Excelのシートの状態として・・・
- シートは複数あります。
- 最初のシート名は一覧
- そのほかのシートはその一覧シートからハイパーリンクで移動できるようになっている。
- 「 ほげ1」、「ほげ2」見たいなシート名です。
- answers (7)
- clip count (0)
- access count (5356)
- answer
-
- bekobekohekomi
- 243ポイント
- 2009/09/01 01:38
2番目のシートを選択して頂いて、下記のマクロを実行頂くと2番目以降のシートのA1セルに「一覧」シートへのハイパーリンクを設定します。 べた書きですが。。。raw embedSub 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
> bekobekohekomiさん
コメントありがとうございます。
早速、このVBAのコードを実行してみました。
実行したところ、2番目のシートにはハイパーリンクが作成されたのですが、それ以降のシートには作成されませんでした。
シート1つ1つにこのVBAを登録?(Visial Basic Editorの左に表示されるシート分ということ)しないといけないのでしょうか?
試しに登録したところ1つ1つのシートでこのコードを実行したところ一覧へのハイパーリンクが作成されました。
ご確認ください。
-
- bekobekohekomi
- 243ポイント
- 2009/09/04 04:48
もしかして3番目のシートを非表示にされてますか? ActiveSheet.Next.Selectで次のシートをアクティブにさせているだけなので、 非表示にしていると動かないですね。 これで表示しているシートだけハイパーリンクを埋め込みます。 またべたがきですが、「一覧」のシートだけ除外するようにしています。raw embedSub 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
> bekobekohekomiさん 3番目のシートは非表示にしていません。 再度このコードで試しました。 今度は「400」と表示され、エラーになってしまっています。
こんなではだめですか? ※既に「シート一覧」というシート名が存在する場合、エラーになります。raw embedSub 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
一覧から各シートではなく、各シートから一覧なんですね。 失礼しました。逆ですね。 こんな感じでできるのではないかと。raw embedSub 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
> kazさん コメントありがとうございます。 早速VBAのコードを実行してみました。 一覧のシート以外のシートに一覧へのハイパーリンクが作成されました! ありがとうございます。 これでもやもやがとれました。 コメントいただいた御二方ありがとうございますm(_ _)m
2
answer
(2009/05/29 06:16)
- 0clip
- 1375access count
- Programming / programming tool / Others
1
answer
(2010/04/14 01:53)
- 0clip
- 844access count
- Programming / programing language / Others
1
answer
1
answer
2
answer
(2009/10/13 02:42)
- 0clip
- 1068access count
- Programming / programing language / JavaScript
3
answer
2
answer
2
answer
(2009/05/29 21:19)
- 0clip
- 1737access count
- Programming / programing language / perl
8
answer
(2009/01/13 11:39)
- 0clip
- 4157access count
- Internet / Browser,Client / Firefox
6
answer
(2009/10/16 01:56)
by 1dumm2
