• ベストアンサー

指定月の火曜日を返すVBA

エクセルVBAの質問です。セルA1に年(例:2009)、セルB1に月(例:5)が入力されたときに、この数値をもとに祝祭日を除いた指定月の全火曜日にあたる日付をコラムCに自動的にリストアップすることは可能でしょうか・・・・?また、リストアップする際、該当日を2回連続してリストアップしたいです(今月でしたら、縦に5/12、5/12、5/19、5/19、5/26、5/26という形で)。宜しくお願いいたします。

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

  • ベストアンサー
  • TYWalker
  • ベストアンサー率42% (281/661)
回答No.2

こういう質問って (1)自分でやってみたけど、どうしてもできないところがあるので、ギリギリできないところを、分かりやすく質問にして「質問を読んだ人が、ああ分かりやすい質問だ! 答え甲斐のある問題だ! ようし、挑戦するぞ!」と思って、答えて、その結果、質問と答えが、あとで読んだ人も参考になるような1個の立派なインターネット記事になる場合 が100点で、 (2)アーなんかめんどくさい質問だな、ようし、投げちゃえ、どっかのヒマ人が答えるからそれをそのまま移せば仕事がいっちょ上がりだ。ヘヘッ楽ちんらくちん と思うのが0点だと思うけど、とりあえず、ご自分の質問何点だと思います? (特に「2回連続」ってところあたり。。。) ぼくもこの掲示板すごく役に立つので、いつもみんなの力を借りて、感謝の気持ちでいっぱいですけど、せめて50点ぐらいの質問は書いているつもりです。 いちおう動くプログラムは書いたけど、考え直して数か所「伏せ字」にしてみました。 Sub listTuesday() Dim y As Integer y = Cells(1, 1) Dim m As Integer m = Cells(1, 2) Dim c As Integer c = 3 Dim r As Integer r = 0 Dim d As Variant On Error GoTo date_err d = DateValue(Str(y) + "-" + Str(m) + "-" + "01") While Month(d) = m 'とりあえず4月と5月だけ入れてみた If d = "2009/04/29" _ ★数行略★ Or d = "2009/05/05" _ Or d = "2009/05/06" Then '何もしないで次へ ElseIf Weekday(d) = vbTuesday Then ★数行略★ d = d + 1 Wend Columns("C:C").EntireColumn.AutoFit 'そのままだと狭いので Exit Sub date_err: MsgBox "日付が正しくないかも" End Sub

acidmilk
質問者

お礼

皆さま、早急にご対応いただきまして本当にありがとうございました。 また、質問の文面で皆様に不快な思いをさせてしまったようでお詫びいたします。

その他の回答 (1)

回答No.1

 weekdayだったかな? 年月日の指定によって、その日の曜日が判別できたと思いますが、それでリストアップは可能では?  後はヘルプなりMSDNなりで確認して、ご自分でコーディングしてください。

関連するQ&A

  • EXCEL 火曜日と金曜日だけを抜き出したい

    エクセルを利用して、火曜日と金曜日の日付だけを抜き出したいのです。 A列には、本日から平成22年3月31日までの日付を入力しています。 このうち、火曜日と金曜日の日付だけを抜き出したいのです。 どのようにすると良いのでしょうか よろしくお願いします。

  • 今日は第一火曜日??

    このカテゴリーでよいのかわからないのですが・・・ 質問内容がうまく表現できないので、いきなり例を出させていただきます。 6月は1日が水曜日で、その日は6月第一水曜日じゃないですか。 では、6月7日火曜日は第一火曜日とすればいいんですよね? 第二火曜日ではありませんよね?? CDレンタルショップで第一火曜日は半額セールをやるそうなんですw とても馬鹿らしい質問だと思いますが、カレンダーを見ていて一度違和感を感じてしまうとだんだん余計にわからなくなってしまいました。 わかりづらい文だったらすみません。

  • Excel VBAについて教えて下さい。

    VBAについて2点ほど質問があります。 (1)複数セル(例:A2:A40)に入力されている文字列を一括で数値に変換するVBAはありますか? (2)複数セル(例:A2:A40)に日付と時間が入力されていて(例:2019/09/12 16:00)、それを一括で日付と時間それぞれ別々のセルへ表示させるVBAはありますか? 現状、1つのセルしか変換できず複数一度には難しいのでしょうか? お分かりの方いましたら、是非ご教示お願い致します。

  • エクセル2010で週間予定表の月曜の日付を1日だけ入れると、他のセルが

    エクセル2010で週間予定表の月曜の日付を1日だけ入れると、他のセルが自動で更新されるようにしたいです。 具体的には、週のはじめの月曜である”11月1日”の”1日”を”8日”と書き換えたとき、下のセルの火曜~の欄が自動で9日~になるようにしたいのです。 少し厄介なことに、縦の日付のセルと日付のセルの間に曜日のセルが挟まっているのです。 できれば、他人の作ったこのフォーマットを崩したくないのです。 よろしくお願いいたします。

  • 指定したセルに条件で次の日を表示させるVBAなど

    セルCL4には日付が表示されています。表示形式は〇〇〇〇年〇〇月〇〇日です。(画像参照) 次にセルCL5~CL76には8:00から10分毎の時間が表示されています。表示形式は〇〇:〇〇です。(画像参照) 時刻と時間間隔は固定ではなく任意で変えていきます。 そしてセルCM5~CM76にはCL4の日付とCL5~CL76の時間を一緒に表示させる計算式を入れています。 質問ですがCM6(画像で言えば8:10の右隣のセル)~CM76の範囲で、CL5~CL76の時刻が0:00になった(次の日の日付の時刻になる)か、CL5~CL76のセルに全て同じ時刻が表示(例えばCL5~CL76の時刻が全て8:00と表示)された場合、CM6~CM76に表示される日付と時刻がCM5の日付の次の日へと順番に表示されていく(画像で言えば質問の条件の時にCL6は2017年11月16日〇〇:〇〇、CL7は2017年11月17日〇〇:〇〇・・・。)計算式やVBAはどの様にすれば宜しいでしょうか?

  • エクセル 入力日より起算して指定日を自動表記する数式は?

    エクセルの数式設定方法について教えてください。 顧客からの問い合わせに対して忘れないように追跡リストを 作成しています。 問い合わせ日 ⇒ 回答日 ⇒ フォロー1(回答日より5日) ⇒ フォロー2(回答日より10日)  上記のように回答日を入力したセルより引用して フォロー(1) とフォロー(2)の日付を自動記載されるようにしたいのです。 祝祭日ははずすなど高度な技術はなくてもよいのでまずはその加算した日の反映の仕方について教えていただければ幸いです。 宜しくお願いいたします。

  • VBAで稼働日を表示したいのですが・・・

    VBAで稼働日を求めたいのですがうまく出来ずに困っています。 A列:日付2008/1/1~2009/3/31まで入っています。 B列:『休』とお休みに該当した日をいれます。(土日とは限らない) 例として1月1日(A1セル)が休みとしたらB1セルに『休』と入れお休み表にします。 C列:適当な日を手入力します。(規則性は全く無し) D列:C列の3稼働日後を入れたいです。 AやB列からどうスキャンし3稼働日後を出したらよいのか… 説明だと分かりづらいかもしれませんのでこんな感じの結果を得たいエクセルがあるので見ていただいた方が分かるかとも思います。 どなたかヒントでもあれば教えて下さい。 お願いします。 http://briefcase.yahoo.co.jp/bc/robert_kubica_bmw/vwp2?.tok=bclxRHbB_q.izEUN&.dir=/&.dnm=%b2%d4%c6%af%c6%fc.xls&.src=bc

  • 第2、第4火曜日などの(関数)表示方法について

    EXCEL2003を使い”家庭のカレンダー”作っています 年、月(A列)を入力すると日(B列)、曜日(C列)が自動的に縦方向に入力されます (D列)に月、金曜日は可燃ごみの日 火曜日は不燃ごみの日と入力されます ここまでは問題ありませんが 第2火曜日は資源ごみ 第4火曜日は危険ごみ としたいのですが第2、第4をどのようにしたら旨く行くのか解りませんので教えてください

  • VBAで月の日数を表示させたい

    EXCEL2000でVBAを作成しています。 シートのセルに =EOMONTH(T4,1) という公式がはいっています。表示は平成17年10月分になっています。 ここのセルの日付に応じて月日数を表示したいのです。 何をしたいかというと 単価×31(月の日数)の計算をするため月日数をセルに自動入力したいのです。 よろしくお願いします。

  • 該当の曜日に色を塗るマクロの作成方法2(VBA)

    いつも拝見させていただき、みなさまのご回答に感謝しています! 以前、質問をさせていただいたのですが、 VBA初心者の私では、やはり自分自身で応用ができず、 大分悩んだのですが解決できず、とても困っています。 前回ご回答してくださったtom04様、ありがとうございました。 『該当の曜日に色を塗るマクロ』を作成したいのですが、 当然ですが行や列を挿入すると「Weekdayプロパティを取得できません。」と エラーになってしまいます。 実際のセル番地を記載しますので、 ご回答をお願いいたします。 勉強不足で申し訳ございません。 【サンプルVBA】----------------------------- ≪使用PC≫ windows XP Excel2003 前回質問URL:http://okwave.jp/qa/q7714972.html ■曜日毎の『ボタン』を7つ作成する。 『月曜日』というボタンを押すと、日付と月曜日のセルに色を塗る。 『火曜日』というボタンを押すと、日付と火曜日のセルに色を塗る。 『水曜日』・・・・・ 【例】 年は(セルA1) 月は(セルA2) 日は(セルA3~セルAE3) 曜日は(セルA4~セルAE4) ※年と月と日は、べた打ちで数値を入力。 ※曜日は月と日から関数を入力し、自動で出ています。 IF(A$3="","",DATEVALUE($A$1&"/"&$A$2&"/"&A$3)) 【月曜日sample VBA】 Sub monday_sample() Dim j As Long Rows(3 & ":" & 4).Interior.ColorIndex = xlNone For j = 1 To 31 If Cells(4, j) <> "" Then If WorksheetFunction.Weekday(Cells(4, j)) = 2 Then Range(Cells(3, j), Cells(4, j)).Interior.ColorIndex = 6 End If End If Next j End Sub 【実用したいVBA】--------------------------- 年は(セルA3) 月は(セルA4) 日は(セルD6~セルAH6) 曜日は(セルD7~セルAH7) ※年と月と日は、べた打ちで数値を入力。 ※曜日は月と日から関数を入力し、自動で出ています。 例:セルD7→『IF(D$6="","",DATEVALUE($A$3&"/"&$A$4&"/"&D$6))』 -------------------------------------------- なにとぞよろしくお願いいたします。