
No.3ベストアンサー
- 回答日時:
簡単ではありますが、ソースを紹介します。
Dim startDate As String
Dim endDate As String
Dim iLoop As Integer
startDate = Sheet1.TextBox1.Text
endDate = Sheet1.TextBox2.Text
For iLoop = 0 To DateDiff("m", CDate(startDate), CDate(endDate)) - 1
MsgBox DateAdd("d", -1, DateAdd("m", iLoop + 1, CDate(startDate)))
Next
Sheet1.TextBox1.Textのテキストボックスに開始月が
「03年11月」という形式で入力されています。
Sheet1.TextBox2.Textのテキストボックスに終了月が
「04年4月」という形式で入力されています。
このような場合、メッセージボックスでの表示となりますが、
「2003/11/30」
「2003/12/31」
「2004/01/31」
「2004/02/29」
「2004/03/31」
と3月分まで表示されます。
有難うございました。
まさに私の求めていたコードです。
> For iLoop = 0・・・
ゼロから初めて良いんですね~
イマイチ意味が分かりません
No.5
- 回答日時:
#3です。
「For iLoop = 0・・・」の部分ですけど、ただの私の癖です。
For iLoop = 0 To DateDiff("m", CDate(startDate), CDate(endDate)) - 1
MsgBox DateAdd("d", -1, DateAdd("m", iLoop + 1, CDate(startDate)))
Next
と書いてある自分のコードを見ますと、
For iLoop = 1 To DateDiff("m", CDate(startDate), CDate(endDate))
MsgBox DateAdd("d", -1, DateAdd("m", iLoop, CDate(startDate)))
Next
と書いた方がわかりやすいかもしれませんね。
結局、ループする回数なので、
0から始めようが1から始めようが
終わりの部分(For iLoop = 1 TO ***)と
~~~~
ループの対象となる
DateAdd("d", -1, DateAdd("m", iLoop, CDate(startDate)))
~~~~~~~
の部分を合わせれば問題ないと思います。
ここら変は、開発者の癖なんかがもろに出ちゃうような気もします。
有難うございました。
普段For文で1から初めているもので、何か意味が有るものかと思ったものですから・・・
配列も0から始まるようですし、0から始める癖をつけましょうかね~
#3は大変参考になりました。DateDiff関数のこういった使い方は 目から鱗です。
他の方も参考になったんじゃないですか。
No.4
- 回答日時:
A列に日付を入れるとして
その月末日をB列に出す場合
Sub test01()
For i = 1 To 10
Cells(i, 2) = DateSerial(Year(Cells(i, 1)), Month(Cells(i, 1)) + 1, 1) - 1
Next i
End Sub
(テスト実行データ)
2003/12/162003/12/31
2004/1/17 2004/1/31
2004/2/18 2004/2/29
2004/3/19 2004/3/31
2004/4/20 2004/4/30
2004/5/21 2004/5/31
2004/6/22 2004/6/30
2004/7/23 2004/7/31
2004/9/24 2004/9/30
2004/10/252004/10/31
次月の1日の日付シリアル値を求めその前日が、月末日です(常套手段)。

No.2
- 回答日時:
もし、月末日ではなく「その月の最終営業日」とかなら、それなりに複雑な処理になりますから、VBAも役不足にならないとは思いますが・・・単なる月末日なんですよね?
質問文だけではプログラムの全貌が見えませんので、とりあえず基本方針だけを。
年をまたぐ場合、For文では無理なので、Do~Loop文を使い、処理が期間の最終月になったら、Exit Doでループを抜けるという方法がより適していると思います。ループの最後で月を+1しておき、もし月が13になった場合は、月を1にして年を+1する、というふうにしておけば、年をまたいだ処理が可能です。
DateAddは「翌月の同日」などを求めるのには向いていますが、月末日を求めるのには使えません。月末日の出し方は、#1の方が書かれているように、DateSerial関数に「求めたい年」と「求めたい月+1」、そして日のところに「0」を入れることで求められます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 格安スマホ・SIMフリースマホ IIJmio 速度遅く解約する場合 3000円くらいかかる? 3 2022/09/01 20:19
- 不動産業・賃貸業 賃貸の解約について質問です。 不動産会社の言うことが分からず質問させていただきました。 新築のマンシ 1 2022/08/06 19:35
- 財務・会計・経理 もう一度減価償却について質問です。 (pc11月31日に、利用開始して1月末決算) 決算終了後の減価 2 2023/04/12 15:08
- その他(住宅・住まい) 賃貸の解約について質問です。 不動産会社の言うことが分からず質問させていただきました。 新築のマンシ 6 2022/08/06 19:42
- その他(ビジネススキル・経営ノウハウ) 年末の場合の請求書発行日について 1 2022/12/12 18:39
- 就職・退職 有給休暇日数について教えてください…! 4月1日に入社し、次の年の4月14日付で退職したのですが有給 6 2023/08/26 04:36
- 派遣社員・契約社員 1週間前に契約期間の変更と言われ… 4 2022/03/26 18:32
- 求人情報・採用情報 日雇い派遣って禁止されてますが実際はもっと酷いですよね? 2 2023/01/05 00:53
- その他(就職・転職・働き方) 入社開始日について教えてください。 短期留学のため、入社開始日が1か月半ほど先になります。 入社開始 2 2023/08/11 09:53
- 退職・失業・リストラ 給与等の条件変更について。 育児休業明け今月4月から現場復帰(正社員)しております。 2月末に4月以 1 2023/04/06 20:58
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで先月、先々月を求める方法
Visual Basic(VBA)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
5
VBAで文字列を数値に変換したい
Excel(エクセル)
-
6
VBA 別シートの同じ日付の欄に値を貼付け
Excel(エクセル)
-
7
月が変わったら自動でシートが複製される方法を教えてください。
Visual Basic(VBA)
-
8
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
9
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
10
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
-
11
【マクロ】名前を保存する際に、同じファイルがあった場合に、メッセージを表示
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTTPレスポンスの終端はどうわ...
-
法則性ある繰り返しをfor文でル...
-
入力した数値を倍々するプログラム
-
For文の終了値を関数にしても問...
-
入力した文字列から母音だけを...
-
Excel VBAで年度をまたぐ期間の...
-
C言語forループが完結した場合...
-
for文while文の無限ループの違...
-
他言語で言うcontinue文
-
For~Nextステートメントの終了...
-
C++のvolatileについて
-
ループ文出力から バイナリフ...
-
excel VBA if文について
-
プログラムで関数は使わない方...
-
特定の文字列が出てくるまでの...
-
C# 演算 Help me!
-
UWSCにてある一定の動作を無限...
-
信頼区間の1.96や1.65ってどこ...
-
Excelで1つしかない値だけを抽...
-
関数とビット列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
ループを途中で抜けたいのですが。
-
Excel VBAで年度をまたぐ期間の...
-
C言語forループが完結した場合...
-
UWSCにてある一定の動作を無限...
-
入力した文字列から母音だけを...
-
excel VBA if文について
-
プログラムで関数は使わない方...
-
C++のvolatileについて
-
入力した数値を倍々するプログラム
-
For文の終了値を関数にしても問...
-
break文でループを一気に抜ける...
-
Delphiで・・・
-
if文の中にfor文なのか、for文...
-
for文while文の無限ループの違...
-
PIC のプログラムについて ど...
-
他言語で言うcontinue文
-
PAD図の書き方
-
C言語、whileループを抜け出す...
-
clock関数を利用した時間計測法...
おすすめ情報