『マクロで』(みき) シートが1〜31日分のシートが31シート作成されています。 その各シートのQ3のセルに日付がシート1には2013/9/1と31シート分入力されています。 別のシートにカレンダーがあります。 このカレンダーを利用してカレンダーの各セルの日付を利用して各シートのQ3の日付を識別してカレンダーにある各セルの日付を検索目的のシートにジャンプできませんか? マクロのボタンなどを利用してでも良い方法ありませんか? 宜しくお願いします ---- おおよそ3ヶ月ぶりにPCを立ち上げた状態なので、甚だしく勘所がずれていそうで、はずしていればスルー乞う。 1.おすすめ 別シートのカレンダー日付セルに各シートへのハイパーリンクを設定しておく。 必要ならこの設定をマクロで行ってもいい。 2.次善 カレンダーシートのカレンダーセルの選択イベント(Worksheet_SelectionChange) で、その日付なり セルの場所などから該当シートを判定してそこにジャンプするコードを書いておく。 いずれにしても別シートのカレンダーのレイアウトを明確にすれば、皆さんからの回答がつくと思うね。 それと、各日付のシートのシート名はどうなっている? (ぶらっと@病み上がりでへろへろ) ---- シート名が1日〜31日として >Q3のセルに日付が シート名と同じ日付? A1に2013・・・年 B1に9・・・・・月 A2に =HYPERLINK("#"&DAY(DATE($A$1,$B$1,ROW(A1)))&"日!Q3",TEXT(DATE($A$1,$B$1,ROW(A1)),"yyyy/mm/dd")) ↓フィル ---- 回答有難うございます シート名が1〜31です 各シートQ3のセルに日付が シート名と同じ日付ではありません B2に2013・・・年 D2に9・・・・月 この様な構成です。 (みき) ---- カレンダーシートのレイアウトを教えてくれる? (ぶらっと) ---- B2に2013・・・年 D2に9・・・・月 B4〜H4 B7〜H7 B10〜H10 B13〜H13 B16〜H16 B19〜H19 に日付 これでわかりますでしょうか?(みき)  ---- ぶらっとさん、お久しぶりです^^。 最近お見かけしなかったので寂しかったですが、復帰されたようでうれしい限りです。 病み上がりとの事、無理せずご自愛ください。 質問に直接関係無い出だしですみません。 >シート名と同じ日付ではありません というのが実際どういう関係にあるのか気になりますが、無理やり案で、 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column < 2 Or Target.Column > 8 Then Exit Sub If Target.Row < 4 Or Target.Column > 19 Or Target.Row Mod 3 <> 1 Then Exit Sub Dim dt dt = Range("B2").Value & "/" & Range("D2").Value & "/" & Target.Value If IsDate(dt) = False Then Exit Sub For Each ws In Worksheets If ws.Range("Q3").Value = CDate(dt) Then ws.Activate Exit Sub End If Next End Sub は意図通りに動くでしょうか。 (Mook) ---- こんばんは 上のマクロコードを試しましたが動きません どうにしたらいいのでしょうか? (みき) ---- カレンダーシートの日付セルに当該シートへのハイパーリンクをセットするコードを。 一度実行しておけば、後はセル選択だけでOK。(勘違いあれば指摘乞う) Sub Sample() Dim i As Long Dim j As Long With Sheets("カレンダー") 'シート名は実際のものに For i = 4 To 19 Step 3 For j = 2 To 8 If .Cells(i, j).Hyperlinks.Count > 0 Then .Cells(i, j).Hyperlinks(1).Delete Select Case .Cells(i, j).Value Case 1 To 31 .Hyperlinks.Add Anchor:=.Cells(i, j), Address:="", SubAddress:="'" & .Cells(i, j).Value & "'!A1" End Select Next Next End With End Sub ---- 一応イベント処理の補足だけ。 上記コードはカレンダーがあるシートにおいたでしょうか。 シートにおいたら、日付をダブルクリックで動く想定です。 (Mook) ---- データのありようは想像しながら書いているので、そこが食い違っている可能性もある、 私のコードは、カレンダーの日付セルは 1〜31の『数字』。で、シート名も1〜31の数字。 で、各シートQ3の値は見ていない。 一方、Mookさんのコードは、この Q3 に 『日付型』で、たとえば2013/9/25 等が記述されているという前提。 実際はどうなのかな? (ぶらっと) ---- この Q3 に 『日付型』で、たとえば2013/9/25 等が記述されているという前提。 実際はどうなのかな? この部分なんですがシート名も1〜31の各シートのQ3にあります。 (みき) ---- 横から失礼します。 これ、私が回答できるわけではないですが、交通整理だけで。 >この部分なんですがシート名も1〜31の各シートのQ3にあります。 実際各シートのQ3にはどのように記載されているんですか? シート名は1〜31のどれかなんですよね。そのシート名と日付けが、ともにQ3セルの中に 記載されているってことですか?例えばどんな風に? #ぶらっとさん 久しぶりにお会いできて、とってもうれしいです! お体に無理のない範囲で、たまにでもお見えになっていただけたらいいなぁと勝手ながら思っています。 (usamiyu) ---- まず、私のコード、実行してくれたかな? で、結果がどうなったかを教えてくれる? ついでに、Mookさんのコードは、コメントしたように、Q3 に2013/9/10 といったように入っていると言うことが 前提なので、とりあえず、今、おそらく 10 といったように入っている Q3 を 2013/9/10 となおして カレンダーシートの日付セルをダブルクリックして、意図通りに動くかどうかを確かめてみたらいかが? で、動けば、あとは、ロジックをデータにあわせるか、あるいは、データをロジックにあわせるか、 そこは、Mookさんと相談しながらすすめていけばよろしいかと。 To Mookさん しゃしゃり出てごめんなさい。 >最近お見かけしなかったので寂しかったですが、復帰されたようでうれしい限りです。 >病み上がりとの事、無理せずご自愛ください。 暖かいお言葉感激です。 To Usamiyuさん Usamiyuさんと話ができてとてもハッピーです 以前ほど、こんをつめてPCに向き合うことが(当分は)無理だと思うけど、また、一緒する機会があれば よろしくね。 (ぶらっと) ---- いえいえ、相変わらずの細かい気配り、尊敬です。 どうも、最初の想定と異なると後の対応を面倒がってしまって^^;;。 なかなか御本人からの回答がありませんけれど、どうなのでしょうね。 シート名が日にちなのであれば、ぶらっとさんので解決しそうです。 (Mook) ---- こんばんは 遅くなりました。すみませんです。 ぶらっとさんのコードでためしては見たのですが変化なしです。 カレンダーシートに1〜31までのシートがあります。 カレンダーのシート名はTOP 1〜31の31個のシート名は12345678910と数字のみの名前その1〜31のシートの各Q3に日付 1には日付2より=IF('1'!Q3="","",IF(DAY('1'!Q3+1) 0 Then .Cells(i, j).Hyperlinks(1).Delete If IsDate(.Cells(i, j).Value) Then n = Day(.Cells(i, j).Value) Select Case n Case 1 To 31 .Hyperlinks.Add Anchor:=.Cells(i, j), Address:="", SubAddress:="'" & n & "'!A1" End Select End If Next Next End With End Sub (ぶらっと) ---- ぶらっとさん思っていたように動きました。凄いですね!ありがとうございます。 大変もうしわけないのですがもう一つ聞いていいでしょうか・・・ このままだと本来のカレンダーの青土曜と赤日曜の色が消えてしまいましたので以下のセルにクリックする場所をかえたのですがこのコードのどこをかえていいのか??? すみませんもう一度おしえてもらえないでしょうか・・・ 変更したセルは↓ B5〜H5 B9〜H9 B13〜H13 B17〜H17 B21〜H21 B25〜H25 に日付 宜しくお願いします。(みき) ---- こんな風に直してみました。 Sub Sample2() Dim i As Long Dim j As Long Dim n As Long With Sheets("TOP") 'シート名は実際のものに For i = 5 To 25 Step 4 For j = 2 To 8 If .Cells(i, j).Hyperlinks.Count > 0 Then .Cells(i, j).Hyperlinks(1).Delete If IsDate(.Cells(i, j).Value) Then n = Day(.Cells(i, j).Value) Select Case n Case 1 To 31 .Hyperlinks.Add Anchor:=.Cells(i, j), Address:="", SubAddress:="'" & n & "'!A1" End Select End If Next Next End With End Sub 訂正ありましたらよろしくおねがいします。 (みき) ---- やっぱり色々試しましたが動きがおかしいのはどこが悪いのでしょうか? カレンダーのレイアウトは変更なしです。 変更はB5〜H5 B9〜H9 B13〜H13 B17〜H17 B21〜H21 B25〜H25 に日付 になります。 宜しくお願いします (みき) 2013/10/19(土) 23:56 ---- こんにちは。 ご希望とは少しずれますが 手っ取り早い方法は、文字色赤はあきらめて 背景色赤にするとか、カレンダーの一番上に曜日の行があるはずなので そこの背景色を赤にしてお茶を濁すとかです。 たぶん必要なのはぱっと見てそこが土日だと分かることだと思いますので 用は足ると思います。 ちなみに、ぶらっとさんのコードはクリックしたセルに日付が入っている ことが前提になっていますので、B4セルをB5セルに変えてみても、そこに 日付がないと動かないし日付があれば青くなる、結局、問題の解決には なりません。 VBAで解決したいなら、まずは、書いていただいたコードを理解して、 変更を考えるのはそのあとではないでしょうか。 ( 佳 ) 2013/10/20(日) 09:58