[[20130924203906]] 『マクロで』(みき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロで』(みき)
シートが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)<DAY('1'!Q3),"",'1'!Q3+1))とこのような式で1を除く2〜31まで入力されています。
カレンダーのシート名(TOP)のセルの詳細は
B2に2013・・・年
D2に9・・・・月
B4〜H4 B7〜H7 B10〜H10 B13〜H13 B16〜H16 B19〜H19 に日付
B4に=IF(MOD(DATE(B2,D2,1),7)=0,DATE(B2,D2,1)-MOD(DATE(B2,D2,1),7)+B3-7,DATE(B2,D2,1)-MOD(DATE(B2,D2,1),7)+B3)
C4に=B4+1
D5に=C4+1
この様な感じになります。
すみませんが宜しくお願いします。(みき)

 遅くなってごめん。

 カレンダーシートの日付セルは『日付型』だったんだね?
 じゃぁ、以下を実行してみてくれる?

 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

 (ぶらっと)

ぶらっとさん思っていたように動きました。凄いですね!ありがとうございます。
大変もうしわけないのですがもう一つ聞いていいでしょうか・・・
このままだと本来のカレンダーの青土曜と赤日曜の色が消えてしまいましたので以下のセルにクリックする場所をかえたのですがこのコードのどこをかえていいのか???
すみませんもう一度おしえてもらえないでしょうか・・・
変更したセルは↓
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


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.