• ベストアンサー

日付の計算

VB6で開発をしています。 YYMMDD形式で日付をあらわした2つの文字列に、日単位で何日差があるのかを調べるいい方法はないでしょうか? うるう年があったりして、いい方法がみつからなくてこまっています。

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

  • ベストアンサー
  • diashun
  • ベストアンサー率38% (94/244)
回答No.1

'Form1にテキストボックスを二つ、コマンドボタンをひとつ貼り付けて実行してみてください。 Private Sub Command1_Click() Dim dtDate1 As Date, dtDate2 As Date, lngDiffDate As Long dtDate1 = CDate(Form1.Text1) dtDate2 = CDate(Form1.Text2) lngDiffDate = DateDiff("d", dtDate1, dtDate2) MsgBox lngDiffDate & " 日です。" End Sub '以上

p52_25
質問者

お礼

バッチりでした! ログインパスワードを忘れてしまい、お礼が大変遅れてしまいました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

例として Sub tst02() a = "020324" t1 = Format(a, "00/00/00") t2 = CDate(t1) MsgBox t2 b = "020314" t3 = Format(b, "00/00/00") t4 = CDate(t3) MsgBox t4 ret = DateDiff("d", t4, t2) MsgBox ret End Sub 結果は10 ーー VB6でやってみて、CDateで日付化できませんか。 出来れば2つの文字列を日付化しDateDiffで引き算する。

全文を見る
すると、全ての回答が全文表示されます。
  • diashun
  • ベストアンサー率38% (94/244)
回答No.2

'No.1です。YYMMDD形式を忘れていました。 '以下の通り修正してください。 Private Sub Command1_Click() Dim dtDate1 As Date, dtDate2 As Date, lngDiffDate As Long Dim stryear1 As String, strMonth1 As String, strDay1 As String Dim stryear2 As String, strMonth2 As String, strDay2 As String With Form1 stryear1 = "20" & Mid(.Text1, 1, 2) strMonth1 = Mid(.Text1, 3, 2) strDay1 = Mid(.Text1, 5, 2) stryear2 = "20" & Mid(.Text2, 1, 2) strMonth2 = Mid(.Text2, 3, 2) strDay2 = Mid(.Text2, 5, 2) End With dtDate1 = CDate(stryear1 & "/" & strMonth1 & "/" & strDay1) dtDate2 = CDate(stryear2 & "/" & strMonth2 & "/" & strDay2) lngDiffDate = DateDiff("d", dtDate1, dtDate2) MsgBox lngDiffDate & " 日です。" End Sub '以上

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 日付で判定する処理

    あまりよくわかっていないので恐縮ですが,掲示板のような処理で入力は日付と文章のみです. 入力の文字列の日付は,今日だと「2005/02/14」と入れ,文章は「こんにちは」としたとするとこの2つがテキストファイルに「,カンマ区切りで」書き込まれます.それをhtmlで表示させているようです. やりたい処理は1週間前の日付だったら文章の文字列を赤色で表示するということをしたいのです. 比較結果で赤文字列にする処理はわかったのですが判定の部分で悩んでおります. 判定する際,思いついたのが入力してある文字列がたとえば「2005/02/14」の形式なのでこの値と今日の日付とを比較して7日前だったら文章を赤文字にしたいのですが,普通はどのような比較をするのでしょうか? 私が考えたのは,ファイルに書き込まれている「2005/02/14」を読み込み「/」をなくして「20050214」にし数字形式にすることで,今日の日付も,「20050214」の形式として7日を引けば負の時は何もせず正の時は文章を赤文字で表示させればと考えたのですが,ファイルから読み込んだ「2005/02/14」から「/」を無くす方法や今日の日付を取得した結果は文字列の形式みたいなので計算にはつかえないようです. 実はもっと簡単な方法があるのではないかと悩んでいたりしています.どなたかご教授お願いいたします.

    • ベストアンサー
    • Perl
  • エクセルの日付の処理について

    エクセルの日付の処理方法を教えて下さい。 VLOOKUPを使って、大量の日付の付いたデータを処理したいのですが、たとえば 一方は  2012/7/1 もう一方は 201207 (月単位のデータしかない、「日」の情報が無い文字列データ) だとします。 このふたつを同じものとして検索したい場合、どのように 201207 を加工したらよいのでしょうか? 201207 という文字列データをシリアル値に変更すればいいのかなと考えたのですが シリアル値に変更する方法がよくわかりませんでした。 よろしくお願いします。

  • エクセルの表示形式(日付→文字)

    エクセルで、2002/12/1のような日付が大量に入っている列があります。 そのセルの表示形式は、現在日付になっているのですが、 文字列に変更する必要が出てきました。 しかし、表示形式を文字列に変更すると、37591のような数字になってしまうセルと、2002/12/1のままのセルが出てきてしまいます。 表示形式を文字列に変えてもすべてのセルが2002/12/1のようになる方法はないでしょうか、よろしくお願いいたします。

  • Excell 日付がおかしい!

    新しいパソコンになって、すべてのExcellのファイルの日付が yymmdd が mmddyy に変わってしまいました。 Ctrl + ; でも 12/26/2011 となります。 yymmdd にもどす方法を教えてください。

  • 日付を抜き出したい

    画像のようにA2~A3に文字列で日付が入力されています。 B2:C3に日付形式でA2に入力されている日付を”ー"で分けて西暦をつけて表示したいと考えています。 D2には開始日の日付の前日の日付を表示したいと考えています 年が変わった場合には翌年の日付を表示するにはどのような式を入力すればいいでしょうか。

  • 日付変換

    会計ソフトから出納帳(エクセル形式)を出力しています。エクセルシートのA列に日付が入っているのですが、5月25日であれば、5.25(実際は半角)のような入り方になっています。また同じ日に複数の仕訳があると 〃 の文字が入ります。これらの数値と文字が含まれる全シートを日付に一括修正することはできないでしょうか? よろしくお願い致します。 A列 5.25 〃 〃 5.26 〃 5.27 〃

  • EXCELで日付を文字列として取り出すには

    EXCELで日付形式のセルの内容を、そのイメージのまま文字列にするにはどうすれば良いでしょうか。何かうまい方法があれば教えてください。 例えば、2006/01/05 と表示されている日付をそのまま文字列として 取り出したいのです。単にセルの書式設定で文字列に変えただけでは 38722とタイムスタンプの値らしきものに化けてしまうので困っています。

  • エクセルの日付

    エクセルの日付についてご教示ください。 現金出納帳の日付蘭(文字列)に◯月◯日とだけ入力されています。同じ年の1月から12月まで、1,000行ぐらいです。 これを◯◯◯◯/◯◯/◯◯という形式に加工したいのですが、どうすればいいでしょうか?

  • エクセルの日付表示について

    A1セルに090705という表示があります。これは、西暦・月・日を意味しています。表示形式は文字列です。この日から1ヶ月前の日付をB2セルに表示させたいのですが、良い方法は無いでしょうか?

  • エクセル・文字列で保存されているデータを日付にしたい

    人からもらったデータです。 日付が文字列で保存されていて20060322という書き方で沢山入力されている列があります。 2006/03/22の表示に変更したいです。 列を指定して書式、セル、表示形式、日付、種類で変更してみようとしましたが、できませんでした。 そういえば、テキストデータを読み込む時、表示形式を指定し忘れて勝手に日付になってしまった文字列(数なのですが)を、後で文字列にするとおかしな数になってしまったことがありました。。。 保存されている表示形式を上手に変更する方法はありますでしょうか? 教えてください。