[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで』(みき)
おおよそ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")) ↓フィル
カレンダーシートのレイアウトを教えてくれる?
(ぶらっと)
ぶらっとさん、お久しぶりです^^。 最近お見かけしなかったので寂しかったですが、復帰されたようでうれしい限りです。 病み上がりとの事、無理せずご自愛ください。
質問に直接関係無い出だしですみません。
>シート名と同じ日付ではありません というのが実際どういう関係にあるのか気になりますが、無理やり案で、 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 等が記述されているという前提。 実際はどうなのかな?
(ぶらっと)
実際はどうなのかな? この部分なんですがシート名も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)
遅くなってごめん。
カレンダーシートの日付セルは『日付型』だったんだね? じゃぁ、以下を実行してみてくれる?
Sub Sample2() Dim i As Long Dim j As Long Dim n As Long
With Sheets("TOP") 'シート名は実際のものに 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 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
(ぶらっと)
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
訂正ありましたらよろしくおねがいします。
(みき)
ご希望とは少しずれますが 手っ取り早い方法は、文字色赤はあきらめて
背景色赤にするとか、カレンダーの一番上に曜日の行があるはずなので
そこの背景色を赤にしてお茶を濁すとかです。
たぶん必要なのはぱっと見てそこが土日だと分かることだと思いますので
用は足ると思います。
ちなみに、ぶらっとさんのコードはクリックしたセルに日付が入っている
ことが前提になっていますので、B4セルをB5セルに変えてみても、そこに
日付がないと動かないし日付があれば青くなる、結局、問題の解決には
なりません。
VBAで解決したいなら、まずは、書いていただいたコードを理解して、
変更を考えるのはそのあとではないでしょうか。
( 佳 ) 2013/10/20(日) 09:58
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.