アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで日報を作っています。
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つずつリンクさせていくのは面倒なので何かいいマクロはありませんか。
どうかよろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございました。
大変、役に立ちました。
また機会があればよろしくお願いします。

お礼日時:2007/07/25 19:23

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!