• ベストアンサー

vbaで今年があと残り何日かを求めたいのですが

vbaで今年があと残り何日かを求めたいのですが Sub test() Debug.Print Year(Date) & "/12/31" - Date End Sub これだと、型が一致しませんになります。 なぜエラーになるのでしょうか? その原因がわかれば解決できそうな気が・・・

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>Year(Date) & "/12/31" これでは単なる"2013/12/31"と言う文字列であり 日付とは認識されません。 DateValue(Year(Date) & "/12/31") - Date 文字列を日付と認識させてから 行えば大丈夫でしょう。

VILRQHQTMY6
質問者

お礼

ご回答ありがとうございました。

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

関連するQ&A

  • vba 「02」を返したいのですが

    Sub test() Debug.Print Month(Date) End Sub のようなコードの時に 月の表記を02のように2桁で返すにはどうすればいいですか? Debug.Print Format(Month(Date), "mm") これだと、なぜか「01」が返ります。 「02」を返したいのですが、どうすればいいでしょうか?

  • 誕生日まであと何日か数えるプログラム

    誕生日まであと何日か数えるプログラムを作りたいのですが、わかりません。 Sub test() Dim NextBirthday As Date If もう今年の誕生日が来てるなら Then NextBirthday = Year(Date) + 1 & "/12/16" elseif まだ今年の誕生日が来てないのなら NextBirthday = Year(Date) & "/12/16" End If Debug.Print "誕生日まであと" & NextBirthday - Date; "日です。" End Sub みたいなことがしたいです。 まだ今年の誕生日が来てないならバージョンともう今年の誕生日が来てしまったら 次の誕生日まであと何日かバージョンを作りたいのですがどうすればいいのかわかりません

  • ワード vba

    ワードの文書内に、文字があるかどうかをvbaで確認したいのですが エクセルのコードを張り付けてみましたが、 もちろんエラーになります。 Sub Macro() If Not Cells.Find(What:="test", MatchByte:=False) Is Nothing Then Debug.Print "testはあります" End If End Sub Cellsで、エラーになります。 このようなコードをワードで使う場合はどう書き換えればいいでしょうか? よろしくお願いします。

  • VBAコードでイミディエイトウィンドウを表示する方

    VBAコードでイミディエイトウィンドウを表示する方法はありますか? 例えば、 Sub test() Debug.Print Now End Sub を実行したときに イミディエイトウィンドウが表示されていなければ結果がわかりませんよね。 Ctrl+Gでイミディエイトウィンドウを表示出来る事は知っていますが サブプロシージャーと実行とともに、 イミディエイトウィンドウをVBAで表示する方法を教えてください。 Sub test() Debug.Print Now イミディエイトウィンドウを表示 End Sub のようにしたいです。 ご回答よろしくお願いします。

  • なぜ2007じゃできないのか?

    エクセル2007を使っています。 Sub test() 'Excel が使用できるメモリの空き容量 Debug.Print Format(Application.MemoryFree, "#,###") & "Byte" End Sub を実行すると、型が一致しません。(Error 13)になります。 2003なら問題ありません。 2007年ではできない理由を教えてください。

  • Word VBA

    ※行頭の下線はプログラムに関係ありません、インデントと解釈ください。 Excel VBAで既に開いているワークブックの一覧取得は Sub test() __Dim wb As Workbook __For Each wb In Workbooks ____Debug.Print wb.Name __Next wb End Sub で成功したのですが、 Word VBAで Sub test() __Dim wb As Object __For Each wb In CreateObject("Excel.Application").Workbooks ____Debug.Print wb.Name __Next wb End Sub では何も表示されません。 問題解決のための知識を与えてくださる方、宜しくお願いします。

  • VBAで期間が何か月間なのかを取得する方法

    VBAで期間が何か月間なのかを取得する方法を教えてください。 Sub test1() Dim dateStart As Date Dim dateEnd As Date dateStart = "2013/1/1" dateEnd = "2013/12/31" Debug.Print 12 & "カ月です" End Sub この場合、12か月ですが、 例えば dateStart = "2013/7/1" の場合、6カ月を返したいのですが それを取得するコードを教えていただけますか? よろしくお願いします。

  • Excel vba

    Excel vba をはじめて1ヵ月程度の初心者ですが、すいません質問させて下さい。 シートをCodeNameでSheets()みたいに指定はできるのでしょうか? また、図形をIDでShaps()みたいに指定する方法はあるのでしょうか? どちらも名前(.Nameの方)は変えてある状態です。 例えばアクティブシート名は"テスト"、図形名は"サンプル"みたいな状態です。 名前は自由に変えていきたいのですが、名前が変わってもかわらず指定できるようにしたいです。 Sub test1 Debug.Print Activesheet.Name Debug.Print Activesheet.Index Debug.Print Activesheet.CodeName Debug.Print Excel.Selection.Name Debug.Print Excel.Selection.Index Debug.Print Excel.Selection.ShapeRange.ID End Sub どなたか御教授おねがい致します!!

  • DatePartを関数使うと、スペースがはいる

    Sub test1() Debug.Print Format(Date, "m") End Sub Sub test2() Debug.Print DatePart("m", Date) End Sub 二つを実行すると、DatePartの場合は 戻り値の前にスペースが入ります。 「12」 「 12」 という結果になります。 なぜなのでしょうか?

  • アプリケーションの横幅の値を取得したい vba

    アクセスのアプリケーションの横幅の値をvbaで取得する事は可能でしょうか? Sub サンプル() Debug.Print Application.Width End Sub はエラーになっちゃいました。