- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変化するワークシート名にハイパーリンクで移動したい)
変化するワークシート名にハイパーリンクで移動したい
このQ&Aのポイント
- 左の月間シートのD6に月数を入れるとA4以下の日付が変わり、右の日付シートのA1の日付も同時に変更されます。ワークシートの名前が「**日」と月が変わるごとにシート名も変わるようにしました。
- しかし、左のシートのA列の「*月*日」の日付をクリックするとその日付に移動するようにハイパーリンクを設定していましたが、今の設定では、ワークシート名が変わるとリンクができなくなります。
- ハイパーリンクを諦めるか、シート名を変えるのを諦めるのかどちらかしかないのでしょうか?何か良い方法は無いものでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
毎日シートのシート名の書式が「21日」のようであるとすると A4の数式を =IF(DATE($B$1+1988,$E$1,ROW(A21))>DATE($B$1+1988,$E$1+1,20),"",HYPERLINK("#"&DAY(DATE($B$1+1988,$E$1,ROW(A21)))&"日!A1",DATE($B$1+1988,$E$1,ROW(A21)))) のようにします。 A4には日付の書式を施しておきます。
お礼
またまた、早速のお世話になりました。 完璧です。 メカニズムはよくわかりませんが、日付を探してリンク関数でリンクしてるのでしょうか? 何せ、今月から関数を見よう見まねで始めた、超素人なもので、いつも丸投げの状態で、申し訳ありません。 マクロもネット検索で探しだしたものを、見よう見まねで工夫して使かわせてもらっている次第です。 実は、シート名の自動チェンジに関しても、日付シートのA1の値が勤務シートからネットで探してきた =IF(勤務表!A4="","",勤務表!A4) という関数で、日付シートのA1に持って来たせいか、 これまた、ネット検索で見つけた Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ERR_HANDLER If Target.Address(False, False) = "C1" Then ActiveSheet.Name = Range("C1").Value End If Exit Sub ERR_HANDLER: MsgBox "現在のA1セルの値はシート名にできません。" End Sub とういう例からのマクロでは、セルに実際に入力した値ではないので シート名が変わらず、 仕方なく、A1の日付を別のセルに =VALUE(A1) でB1セルに移し 更に隣のセルに =DAY(B1) B1の数値をC1に形式を選択して貼り付けて、擬似入力とし 最終的にはこの作業をマクロの自動記録ですべての日付シートに適用しようと考えております。 今回もそうですが、素人考えではこれが限界です。 しかし、教えてもらった答えをその都度、検証しながら、学習し、自分のものにしております。 本当に有難うございました。