エクセルで日報を作っています。
1日づつシートが1か月分あります。(Mainシート、8/25~9/24のシート)
すべてのシート(※1)にB53にBack、H53にMain、O53にNextとあります。
(※1)最初のシートはNextのみ 最後のシートはBackのみ。
8/25のNextは8/26のNextにリンクさせる。Backはその逆。
MainはMainシートへリンクする。Mainシートにはリンクはない。
1つずつリンクさせていくのは面倒なので何かいいマクロはありませんか。
どうかよろしくお願いします。
No.2ベストアンサー
- 回答日時:
すみません。
マクロ例にミスがありました。必須プロパティを忘れていました。Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim nxS As Integer
Dim bkS As Integer
On Error Resume Next
nxS = ActiveSheet.Index + 1
bkS = ActiveSheet.Index - 1
If Sh.Name = "main" Then Exit Sub
ActiveSheet.Hyperlinks.Add _
Anchor:=Range("H53"), _
Address:="", _
SubAddress:= _
"main!H53", TextToDisplay:="Main"
ActiveSheet.Hyperlinks.Add _
Anchor:=Range("O53"), _
Address:="", _
SubAddress:= _
Sheets(nxS).Name & "!O53", TextToDisplay:="Next"
If Sh.Index = 2 Then Exit Sub
ActiveSheet.Hyperlinks.Add _
Anchor:=Range("B53"), _
Address:="", _
SubAddress:= _
Sheets(bkS).Name & "!B53", TextToDisplay:="Back"
If Err.Number = 9 Then Range("O53").Value = ""
End Sub
No.1
- 回答日時:
main 以外のシート名は可変扱いで、シートのインデックス値を使って次のシート、前のシートを指定してはいかがでしょう。
このマクロ例はWorkbook_SheetActivate イベントで、シートがクリックされる度に、ハイパーリンクを設定し直します。シートの追加・削除・main以外のリネームにも有効です。
TisWorkbookコードモジュールに張り付けて使用してみてください。なお、最初は空のシートで試してください。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim nxS As Integer
Dim bkS As Integer
On Error GoTo EH
nxS = ActiveSheet.Index + 1
bkS = ActiveSheet.Index - 1
If Sh.Name = "main" Then Exit Sub
ActiveSheet.Hyperlinks.Add _
Anchor:=Range("H53"), _
SubAddress:= _
"main!H53", TextToDisplay:="Main"
ActiveSheet.Hyperlinks.Add _
Anchor:=Range("O53"), _
SubAddress:= _
Sheets(nxS).Name & "!O53", TextToDisplay:="Next"
If Sh.Index = 2 Then Exit Sub
ActiveSheet.Hyperlinks.Add _
Anchor:=Range("B53"), _
SubAddress:= _
Sheets(bkS).Name & "!B53", TextToDisplay:="Back"
Exit Sub
EH:
If Err.Number = 9 Then Range("O53").Value = ""
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 最終行の指定について教えてください。 複数シートを1シートへまとめる下記マクロでは各シートの6行目を 1 2022/10/04 18:37
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) Excelについて 1 2023/03/06 10:26
- Excel(エクセル) 添付写真上のExcelシートのように時間と曜日ごとに担当者が振り分けられているシートがあります。 例 1 2023/03/08 13:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
括弧があるとHYPERLINKで飛べな...
-
エクセルで複数のシートをフォ...
-
原付 レッツシート開け方
-
車のシートがへたってきました...
-
リアシート無しで運転してたら...
-
Excel複数シートから日付と文字...
-
台所流しの水音を小さくしたい
-
シートベルトの固定解除
-
車のシートでおもらし
-
マクロの別シートのデータ振り...
-
癒着してしまったテレビの液晶...
-
車内ビショビショ・・・
-
土間シートはどこに行けば買え...
-
エクセルVBA 4行飛ばしで転記す...
-
エストレヤの鞍型シートを純正...
-
エストレヤのシートが外せない…
-
建築模型、カーブの作り方
-
マグネットシートって・・・
-
ホンダのフリードの7人乗りは...
-
バイクのシートをペイントする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
原付 レッツシート開け方
-
エクセルVBA 4行飛ばしで転記す...
-
防風目的で使おうと写真の白い...
-
シートベルトの固定解除
-
車のシートでおもらし
-
ポケットにミシンでワッペンを...
-
Excel複数シートから日付と文字...
-
リアシート無しで運転してたら...
-
水の染み込んだバイクのシート...
-
Excel VBA シート名変更時、重...
-
電車のシートって何でこんな暑...
-
バイクのシートを取り替えても...
-
フォルツァ バッテリーを外して...
-
ポップコーンの捨て方
-
建築模型、カーブの作り方
-
マグナ250とマグナ50でパーツの...
-
Googleのスプレッドシートでシ...
-
アドレスV125G(K7)の整備に詳...
おすすめ情報