Excel VBA質問箱 IV

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

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


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

【67333】日付データへの変換について 八家九僧陀 10/11/25(木) 18:24 質問[未読]
【67335】Re:日付データへの変換について Hirofumi 10/11/25(木) 19:23 回答[未読]
【67337】Re:日付データへの変換について 八家九僧陀 10/11/25(木) 20:42 お礼[未読]
【67340】Re:日付データへの変換について Hirofumi 10/11/26(金) 8:53 回答[未読]
【67347】Re:日付データへの変換について 八家九僧陀 10/11/27(土) 0:39 お礼[未読]

【67333】日付データへの変換について
質問  八家九僧陀  - 10/11/25(木) 18:24 -

引用なし
パスワード
   年末調整事務用のVBAを作成しています。
生年月日により、特定扶養控除対象者、老人等、年齢要件により控除額が決定されるものがあります。
扶養情報のFormで、生年月日を入力して、その生年月日により、年齢要件を自動で判定したいのですが、日付データとしての取得方法がわかりません。

combo元号、text年、text月、text日を連結して日付データとして、sheet1.range("A1")の日付と比較して、"老人","一般"と判定するVBAをご教示ください。

例:昭和16年1月1日以前に生まれた人は「老人」です。
combo元号=[S]、text年=[10]、text月=[4]、text日=[5]と入力した場合

Sub 判定()
Dim Birthday As Date
Birthday = combo元号.value & val(text年.value) & "/" & val(text月.value) & "/" & val(text日.value)
MsgBox ”Birthday”→”35/04/05”と表示しました
If Birthday <= range("A1").value Then
'A1には「S16.1.1」の日付データが入っています。
MsgBox ”老人”
else
MsgBox ”一般”→”老人”のはずが”一般”と表示されました
end if
end sub

この程度のことがわからず、年末調整のVBAを組むなどお恥ずかしいかぎりですが、素人なりに何とかがんばりたいと考えています。
どなたかご教示お願いします。

【67335】Re:日付データへの変換について
回答  Hirofumi  - 10/11/25(木) 19:23 -

引用なし
パスワード
   これでは?


Sub 判定()

  Dim Birthday As Date
  
  Birthday = DateValue(combo元号.Value & Trim(text年.Value) & "/" _
        & Trim(text月.Value) & "/" _
        & Trim(text日.Value))
  
  MsgBox Birthday '→”35/04/05”と表示しました
  
  If Birthday <= Range("A1").Value Then
    'A1には「S16.1.1」の日付データが入っています。
    MsgBox "老人"
  Else
    MsgBox "一般" '→”老人”のはずが”一般”と表示されました
  End If
  
End Sub

【67337】Re:日付データへの変換について
お礼  八家九僧陀  - 10/11/25(木) 20:42 -

引用なし
パスワード
   ▼Hirofumi さん:
>これでは?
>
>
>Sub 判定()
>
>  Dim Birthday As Date
>  
>  Birthday = DateValue(combo元号.Value & Trim(text年.Value) & "/" _
>        & Trim(text月.Value) & "/" _
>        & Trim(text日.Value))
>  
>  MsgBox Birthday '→”35/04/05”と表示しました
>  
>  If Birthday <= Range("A1").Value Then
>    'A1には「S16.1.1」の日付データが入っています。
>    MsgBox "老人"
>  Else
>    MsgBox "一般" '→”老人”のはずが”一般”と表示されました
>  End If
>  
>End Sub

判定できました。ありがとうございます。
Datevalueでちゃんと日付データとして取得していなかったということですね。
ところで、Trim関数は今まで全く使ったことがないのですが、ご教示いただいたコードにも使われていますが、向後の勉強のため、その使用意図、効用を教えていただけませんか?

【67340】Re:日付データへの変換について
回答  Hirofumi  - 10/11/26(金) 8:53 -

引用なし
パスワード
   >判定できました。ありがとうございます。
>Datevalueでちゃんと日付データとして取得していなかったということですね。
>ところで、Trim関数は今まで全く使ったことがないのですが、ご教示いただいたコードにも使われていますが、向後の勉強のため、その使用意図、効用を教えていただけませんか?

Helpを見れば解ると思いますが
TextBoxで入力してますので、末尾等にスペースを入れるかもしれませんので
先頭と末尾の両方のスペースを削除しています

【67347】Re:日付データへの変換について
お礼  八家九僧陀  - 10/11/27(土) 0:39 -

引用なし
パスワード
   ▼Hirofumi さん:
>>判定できました。ありがとうございます。
>>Datevalueでちゃんと日付データとして取得していなかったということですね。
>>ところで、Trim関数は今まで全く使ったことがないのですが、ご教示いただいたコードにも使われていますが、向後の勉強のため、その使用意図、効用を教えていただけませんか?
>
>Helpを見れば解ると思いますが
>TextBoxで入力してますので、末尾等にスペースを入れるかもしれませんので
>先頭と末尾の両方のスペースを削除しています

勉強になりました。ありがとうございます。

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