Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11374 / 13645 ツリー ←次へ | 前へ→

【16451】組み込み関数について おっちゃん 04/7/28(水) 11:03 質問[未読]
【16453】Re:組み込み関数について IROC 04/7/28(水) 11:34 回答[未読]
【16455】Re:組み込み関数について おっちゃん 04/7/28(水) 11:56 お礼[未読]
【16461】Re:組み込み関数について Jaka 04/7/28(水) 13:11 発言[未読]
【16464】Re:組み込み関数について Asaki 04/7/28(水) 13:36 発言[未読]
【16470】Re:組み込み関数について おっちゃん 04/7/28(水) 14:23 お礼[未読]

【16451】組み込み関数について
質問  おっちゃん  - 04/7/28(水) 11:03 -

引用なし
パスワード
   ユーザーフォームに日付を入力するテキストボックスを作成します。

 +----+  +----+  +----+
年|  | 月|  | 日|  |
 +----+  +----+  +----+

ここで、入力された年月からその月の月末日を取得して、入力された日の
妥当性チェックを行います。このとき、EXCELの関数でEOMONTH関数を利用
したいと思いました。
コードを書いているときに思ったんです。そのままEOMONTHと記述しただ
けでは組み込み関数なのかユーザー関数なのかの判断できないなと。

ご教授のほどよろしくお願いします。

【16453】Re:組み込み関数について
回答  IROC  - 04/7/28(水) 11:34 -

引用なし
パスワード
   これで如何でしょうか?

Dim y As Long, m As Long, d As Long
Dim ret As String
  
  y = 2004
  m = 7
  d = 77
  
  ret = y & "/" & m & "/" & d
  
  MsgBox IsDate(ret)
  

【16455】Re:組み込み関数について
お礼  おっちゃん  - 04/7/28(水) 11:56 -

引用なし
パスワード
   IROC さん ありがとうございました。
>これで如何でしょうか?
>
>Dim y As Long, m As Long, d As Long
>Dim ret As String
>  
>  y = 2004
>  m = 7
>  d = 77
>  
>  ret = y & "/" & m & "/" & d
>  
>  MsgBox IsDate(ret)
>  

IsDate関数があるのですね。参考になります(もうちょっと注意深くHELPを見ないといけないですね。反省します)。

実際には入力された日付が下のようだったとします。
年→2003 月→2 日→29
カレンダーを見るとわかるようり、2003年2月は閏年ではないので、29というのは無いわけです。
この判断にEOMONTH関数を使いたいわけだったのです。

この質問をしてからいろいろとHELPをみていたところ、DateAdd関数が使えるのがわかりました。これを利用して入力された年月に"01"をつけ、強制的に月初日にして1ヶ月加算し、翌月の月初日を求めます。それから1日マイナスすることで、入力された年月の月末日を求めるようにします。

いまこの方法ができるかどうか、検証をしたいとおもいます。

これからもよろしくお願いします。

【16461】Re:組み込み関数について
発言  Jaka  - 04/7/28(水) 13:11 -

引用なし
パスワード
   こんにちは。
全く解ってませんけど...。
3/1と返ってきます。

y = 2003: m = 2: d = 29
MsgBox Format(DateSerial(y, m, d), "mm/dd")

【16464】Re:組み込み関数について
発言  Asaki  - 04/7/28(水) 13:36 -

引用なし
パスワード
   こんにちは。

月末が知りたい??ですか?
Sub test()
  Dim strYYYY   As String
  Dim strMM    As String

  strYYYY = "2003"
  strMM = "2"
  MsgBox DateSerial(CLng(strYYYY), CLng(strMM) + 1, 0)
End Sub

【16470】Re:組み込み関数について
お礼  おっちゃん  - 04/7/28(水) 14:23 -

引用なし
パスワード
   Asaki さん ありがとうございます。
>こんにちは。
>
>月末が知りたい??ですか?
>Sub test()
>  Dim strYYYY   As String
>  Dim strMM    As String
>
>  strYYYY = "2003"
>  strMM = "2"
>  MsgBox DateSerial(CLng(strYYYY), CLng(strMM) + 1, 0)
>End Sub

この方が一発で求められるし、スマートですね。
利用させていただきます。

これからもよろしくお願いします。

11374 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free