[[20070925194521]] 『VBA年カレンダーの表示変更について』(きんめい) ページの最後に飛ぶ

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

 

『VBA年カレンダーの表示変更について』(きんめい)

 ろうらんこときんめいです。自分では解決できませんので、
 過去レスについてお教え下さい。
 
 下のコードは、なーさんに(キリキ)(〃⌒o⌒)b が、レスしているものですが
 1年分横に展開しているのを縦に表示するにはどうすれば良いのでしょうか
 次に、x,yで2列表示を3列で表示するにどこを変更すると良いでしょうか。
  
 x = IIf(i Mod 2 = 0, 9, 1) 'i月のカレンダーの横位置をx
 y = ((Int((i - 1) / 2)) * 9) + 1  'i月のカレンダーの縦位置をy
 よろしくお願いいたします。祝日関連は省略したいです。
 これから出かけますので、明朝以降の返信になりますのでご容赦下さい。
    
[[20060814160809]]『VBAで年間カレンダー作成』(なーさん) 

 >Sub Calender2()
 >   Dim i As Integer, j As Integer, x As Integer, y As Integer
 >   Dim xx As Integer, yy As Integer, MyY As Integer, Nissu As Integer
 >    MyY = 2006
 >    For i = 1 To 12 '1月〜12月をiという変数で表現する
 >        x = ((i - 1) * 8) + 1 'i月のカレンダーの横位置をx
 >        y = 1 'i月のカレンダーの縦位置をy
 >        Cells(y, x + 4) = CStr(i) & "月" 'その月の1行目に月の名前を書く
 >        Cells(y + 2, x + 1).Resize(, 7) = Array>("日", "月", "火", "水", "木", "金", "土") _
 >            'その月の3行目に曜日の見出しを書く
 >        Cells(y + 2, x + 1).Font.ColorIndex = 3
 >        Cells(y + 2, x + 7).Font.ColorIndex = 5
 >        xx = Weekday(DateSerial(MyY, i, 1)) - 1 'xxで曜日(1〜7)を表現する
 >                       'i月の初めの曜日を代入し、1を引いておく
 >        yy = 3 'その月の4行目から日を書くでは解決できませんので
 >    Nissu = Day(DateSerial(MyY, i + 1, 0))
 >        For j = 1 To Nissu 'jという変数で日を表現する
 >            xx = xx + 1 '曜日を進める
 >            If xx = 8 Then '曜日が7を超えた場合の処理
 >                xx = 1
 >                yy = yy + 1
 >            End If
 >            Cells(y + yy, x + xx) = j '日を書く
 >            Select Case xx
 >                Case 1  '日曜日の色
 >                    Cells(y + yy, x + xx).Font.ColorIndex = 3
 >                Case 7  '土曜日の色
 >                    Cells(y + yy, x + xx).Font.ColorIndex = 5
 >                Case Else 'その他の色
 >                    Cells(y + yy, x + xx).Font.ColorIndex = 1
 >            End Select
 >            'If Shukujitu(i, j) = "Yes" Then
 >            '    Cells(y + yy, x + xx).Font.ColorIndex = 3
 >            'End If
 >        Next j
 >    Next i
 >    Cells.ColumnWidth = 3
 >End Sub   
  xp,Excel2002

 >1年分横に展開しているのを縦に表示
 これは「Calender2()」のコードの事ですかね?
 単純にxとyを入れ替えてみるのでは駄目ですか?
        x = ((i - 1) * 8) + 1 'i月のカレンダーの横位置をx
        y = 1 'i月のカレンダーの縦位置をy
 この部分を
        x = 1 
        y = ((i - 1) * 8) + 1 

 >x,yで2列表示を3列にする
 これは、「Calender3()」のコードの事ですかね?
        x = IIf(i Mod 2 = 0, 9, 1) 'i月のカレンダーの横位置をx
        y = ((Int((i - 1) / 2)) * 9) + 1  'i月のカレンダーの縦位置をy
 この部分を
        x = Choose(i Mod 3 + 1, 17, 1, 9)
        y = ((Int((i - 1) / 3)) * 9) + 1 
 こちらと入れ替えてみるのはどうでしょう。

 御質問が、上手く読めないので 見当違いの事でしたらごめんなさい。
 文頭に半角スペースを入れると、改行がそのまま表示出来ますので
 ご活用下さい。

 (HANA)


 おはようございます。きんめいです。
 パソコンがフリーズ(クラッシュ)して、作業中の混乱で
 送信してしまい、全く予想外の見苦しい表示となり、
 御迷惑おかけしてしまい申し訳ございません。
 HANAさん、ご回答有り難うございます。
 3列表示はうまくできました。ただ1行表示の10月の
 月名表示が9月のカレンダーに入って表示されます。
 月名と前月のカレンダーとの間に空白行を入れるには
 どうしたらよいのでしょうか。今年の場合7月や12月は
 六段になりますが、その場合は空白行が二つ入っても
 よいのでずが。
よろしくご教示お願いいたします。

 本当ですね、検証不足でした。
 y(月の始まり)の行を決めるときの
>y = ((i - 1) * 8) + 1
 この「8」は    ~~~
 「一月分として8行確保」と言う数字ですので
 お好みで 9 でも 10でも 変更してみて下さい。
 たぶん、上手く行くと思います。

 (HANA) 


 前にここに書いたものをちょっと手を加えただけですけど・・・。
 BJ

 Sub dffl2()
 Dim i As Long, ii As Long
 Dim myday As String, my As Long, mm As Long
 Range("A1:AI32").ClearContents
 myday = "2007/01" '初めの年月
 my = Left(myday, 4)
 mm = Right(myday, 2)
 For i = 0 To 11
     ii = ii + 1
     Cells(1, ii).Value = Format(DateSerial(my, mm + i, 1), "m")
     Cells(2, ii).Value = 1 & "日"
     Cells(2, ii + 1).Value = Format(DateSerial(my, mm + i, 1), "aaa")
     MB = Format(DateSerial(my, mm + i + 1, 1) - 1, "d")
     Cells(2, ii).Resize(, 2).AutoFill Destination:=Cells(2, ii).Resize(MB, 2), Type:=xlFillDefault
     ii = ii + 2    '←2列空きなら +3 空き無しなら +1 15:05追加
 Next
 End Sub

 HANAさん、BJさん、フォローありがとうございます。
 最近は、ちょっと忙しくあまり書き込み出来ていませんでした。。。
 
 で、きんめいさんの仰っていることはこう言うことでしょうか?
 
 「Calender3()」のコードへ
 Dim yoko As Integer
 yoko = ※ '横にいくつ展開するかを設定
 を追加。
 ※ の部分に、横にいくつで展開するかを数値で入力
 例:横に3列にするなら
  yoko = 3
 
 >x = IIf(i Mod 2 = 0, 9, 1) 
 >y = ((Int((i - 1) / 2)) * 9) + 1  
 を、
 x = ((i - 1) Mod yoko) * 8 + 1
 y = ((Int((i - 1) / yoko)) * 9) + 1

 (キリキ)(〃⌒o⌒)b

 HANAさんへお陰さまで、解決できました。質問ボードのほうも
 訂正できましたようです。気持ちが昨夜の中秋の名月のようですっきりです。

 BJさんありがとうございます。予定表作成のバリェーションが 増えました。
(キリキ)(〃⌒o⌒)bさんまたまたお世話になりました。INAさんにお邪魔
 したとき、昨年の9月4日にお教え戴いた以来です。アドレスがわからずに
 OutlookExpressの下書きに入ったままになっておりました。
 急に親不知を抜歯することになって、飲食も出来ず隣町の書店などめぐって
 来ましたので返事が遅くなりました。
 みなさま今後ともよろしくお願いします。ずっと脳裏に残っていたもののひとつ
 ですから。 



 こちらもspam っぽいので↑削除しました。2008/06/01 11:06(HANA)



 2008/06/02 6:00 にまたもやspamアリ。 2008/06/02 9:05 削除 (かなれっと)


  同じくspamらしく。  2008/06/03 9:41 削除  (to-risugari)


  同じくspamらしく。  2008/06/04 17:41 削除 
 何故こればかり? (dack)



 またまたSPAM  2008/6/6 18:43削除
 (MARBIN)


 あらら。。。spam削除 2008/6/11 23:05
 (dack)

 2008/06/12 00:40 spam 対策を行いました。

 携帯用 Wiki k_wiki2_m.cgi を使ってコメントされていましたので
 携帯用 Wiki のコメント欄を削除しました。

 このまま様子を見たいと思います。
 携帯(/mobile)でアクセスしていた方、ごめんなさい。

 (kazu)

 校長先生、いつもありがとうございますm(__)m

 二つのスレは、気になっていたのですが、なかなか覗くことも出来ず心配していました。
 今回の対策で、無事に解決出来ればいいですね^^

 (キリキ)(〃⌒o⌒)b

コメント返信:

[ 一覧(最新更新順) ]


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