• ベストアンサー

期間をきめて日程表作成

VBA初心者です。 今、日程表を作成しているのですが、調べてもわからないため質問させてください。 たとえば、1月と2月のカレンダーを日程はA列に、曜日はB列に取得する方法はネット上に答えが転がっているのですが、1月15日から2月14日までといったように期間限定でカレンダーを取得したい場合はどの様にしたらよいのでしょうか?VBAを使いワンクリックで取得できるようにしたいと考えています。 (期待している表)  A列   B列  1/15   月  1/16   火  1/17   水   :   : 質問が分かりにくくてすいません。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

Dim D, Y& D = #2009/01/15# Do Until D > #2009/02/14#   Y = Y + 1   Cells(Y, 1) = D   Cells(Y, 2) = Format(D, "aaa")   D = DateAdd("D", 1, D) Loop 上記マクロを実行します。開始日と終了日は適宜、変更できるように しておく(どこかのセルを参照するなど)と良いでしょう。

T030036
質問者

お礼

まさかこんなに奇麗にまとまった回答がくるとは…と思いながら実行してみると自分の思い通りの動きをしてくれました。 感動しています。今回2通りのパターンの回答をいただいているのですが、両方ともまだ自分の力では思いもつかないような回答で、なんだか楽しくなっています。 少し仕事上マクロが必要なため勉強しているので、また質問するかもしれませんがよろしくおねがいします。

その他の回答 (1)

回答No.2

Excelですか?Accessですか? Excelだとして回答します。 例えば下記のようなメソッドを作成します。 ------------------------------------------------------------------- Private Function GetWeekday(ByVal dtKeyDate As Date) As String Dim strRet As String '返却値の初期化 strRet = "不明" '日付判定 If IsDate(dtKeyDate) Then '正常な日付のみ曜日を取得する strRet = WeekdayName(Weekday(dtKeyDate)) End If '値を返却 GetWeekday = strRet End Function ------------------------------------------------------------------- で、クリックイベントに ------------------------------------------------------------------- Dim dtStDate As Date Dim dtEdDate As Date Dim lngIndex As Long '日付の開始終了の初期値設定 dtStDate = CDate("2009/1/15") dtEdDate = CDate("2009/2/14") 'インデックス初期値設定 lngIndex = 1 '開始と終了の日付が同じになるまで処理を行う Do Until dtStDate > dtEdDate 'データを表示 ※環境に合わせて変更 Sheet1.Cells(lngIndex, 1) = CStr(dtStDate) Sheet1.Cells(lngIndex, 2) = Left(GetWeekday(dtStDate), 1) '開始日付に1日加算 dtStDate = DateAdd("d", 1, dtStDate) 'カウント lngIndex = lngIndex + 1 Loop ------------------------------------------------------------------- とやればできると思います。 質問の趣旨と違ったら申し訳ありません。

T030036
質問者

お礼

早急な回答をありがとうございました。 なんだか難しいかんじですが、試してみると思い通りの動きになりました。 今よく見てコードがなにをしているのかを勉強しています。 どうもありがとうございました(^^) あっすいませんでした。エクセルの話でした。

関連するQ&A

  • Excelの日程表について

    日程表でB列とC列に日付を入れたら横についているカレンダーに関数や条件付書式を利用して、色を付けるようにしたいのですが、どのようにすればよろしいでしょうか? よろしくお願いします。

  • エクセルで作る月間表 その2/3

    たびたびお世話になっております 再びエクセルに関する質問なんですが、 たとえばA1に「7月」 A2から順次「1日」、「2日」・・・「31日」 B列に曜日が表示され、 その表の下に、その月の曜日をカウントした表を作りたいのですが、 2005年の7月なら 日曜が5日(金、土も5日) 月曜が4日(火、水、木も4日) どのような式で求められるのでしょうか? 賢者のみなさん、ご教授をよろしくお願いいたします

  • 月間チェック表を作成時の日付と曜日の出し方。

    エクセルの表で質問です。   A  B  C  D  E  F 1      2005 年 08  月 2 1  月 3 2  火 4 3  水 5 4  木 上記の表でC1とE1を打ち込んだときにA2・B2以降の 曜日と数字が変わるような処理をするにはどうすればよいでしょうか。 例えば2月は28日までなので29日~31日までの数字と曜日を 空白に出来るような処理にしたいです。

  • エクセルでの日程表作成

    一度投稿しましたが、用が足りておらずご指摘事項を再掲載させていただければと存じます。 お世話になります。エクセルでの日程表作成について教えていただければ幸いです。 習い事を運営していまして、毎月の生徒ごとの授業日程カレンダーをエクセルで作成したいと思っています。(添付画像の日程表) 別シートに生徒名を打ち込んであり、カレンダーの氏名をプルダウンで選択しています。 例えば、 氏名 G1 で 山田太郎 を選んだ時、G7に sheet2 のF2を 氏名 G1 で 山田花子 を選んだ時、C8にsheet2のB3、E8にsheet2のD3を 上記のように、生徒ごとに反映させたいです。 上手く説明できておらず申し訳ございませんが、よろしくお願いいたします。

  • Excelの数式が全く分かりません

    下記の様な表を作っていますが、ステータス”A”を入れる部分の数式が分かりません。 B列からH列は基本情報を扱っていて、曜日とその曜日に該当する項目に○がついています。 J列以降は横軸のカレンダーになっていて、5月、6月と進んでいきます。 設定したいことは、基本情報の曜日の○がついていたら、J列以降の該当する曜日にAがつく。ということです。項目Aの日曜が○だったら、4/2、4/9にステータスAが入るというかたち。 何を組んでよいのか全く分からないので、ご教授願いたいと思います  A列  B列 C列 D列…H列  J列 K列 L列 1                4/2 4/3 4/4… 2      日 月 火 土   日 月 火 3 項目A ○         A 4 項目B   ○ ○       A  A

  • エクセル勤務表作り

    初めて作る為困っています。A列に日にち、B列に曜日が出るようにカレンダーを作りました。 C列に名前を入れています。休みの曜日が固定されているので(例えば月、木とか)何かをすると、自動的に休みの曜日に○がつくという事はできるのでしょうか? 初心者なので教えて下さい

  • VBAでスケジュール表を作成しています

    業務短縮化のために、VBAを使って社内のスケジュール管理ファイルを制作しています。 つくろうとしているのは、こんな感じです。 1、まず、罫線だけのマスター用紙があります。 2、別シートに設置した「スケジュール作成」ボタンをクリックすると、マスター用紙がコピーされ、新しいシートが作成されます。 この新しいシートの「A」列に、自動的にカレンダーが入力されます。 この2の部分をVBAで自動化したいと考えています。 すでにボタン押下→シートをコピーするところはできました。 カレンダーを作るには、月の最終日の日にちと曜日をとればいいのかな?とか予想はしているのですが。。。 手掛かりなどありましたらお願いします

  • エクセルで勤務日程表を作りたい!

    エクセル2010を使って、添付した画像のような日程表を作りたいです。 月間のシフト表と日程表は別のエクセルブックです。 実際の従業員は20名いる上、勤務時間もバラバラなので「早番」「遅番」と設定する事が出来ません。 日程表は、一番左の列がA列とすると、A列、E列、H列、L列に時間列が入ります。 勤務時間外の時間帯のセルをグレーで塗りつぶしたいのですが、 このような表を作るにはどうしたら良いでしょうか? どなたかお力を貸して頂けませんでしょうか?よろしくお願い致します。

  • エクセルの当番表を作りたいのですが

    似たような質問があると思いますが、なかなか合ったものが無かったので質問させていただきます。 1か月の活動内容が記載されたカレンダーがありまして、A列に日付が1か月分入っています。 B列に当番の名前を入れたいのですが、毎日では無くて飛び飛びになっています。 具体的には、火・木・土・日だけしか当番の名前は入りません。 月次の予定表を兼ねているので、火・木・土・日だけの表示にする事はできません。 当番は10人で、1年間同じ順番で回ってきます。 大した数ではないので今まで直接打込んでいましたが 何か自動でできるような便利な方法がありましたら教えてください。 もう一つ、C列には、管理者が入ります。 管理者は火・木担当と、土・日担当がいます。 管理者は、曜日固定でいつも同じ人が入ります こちらも何か便利な方法があれば教えてください。 よろしくお願いします。

  • カレンダーの作成

    エクセルにて カレンダーというか年と月を入力すると 下の表に1~31 と その曜日が出せるようにしたいのですが そのような式わかる方いらっしゃいますでしょうか A1 年(年号表示なので今なら18) A2 月 A3~34(その月の日) B3~34(その月の曜日) ってな感じで表を作成したいのですが・・・ 各セルを&でくっつけたとかしてみたんですが・・・だめでした お願いします。