失礼いたします。
VBAで年齢の計算を行いたいのですがなかなかうまくいきません。
=sub
Dim 開始日付 As String
Dim 終了日付 As String
Dim 年齢 As String
開始日付 = "S54/4/1"
終了日付 = "H22/4/1"
年齢 = "=DATEDIF(開始日付,終了日付,""Y"")"
=endsub
としても、DATEDIF関数は引数をうまく処理してくれないのです。
エクセル関数を使わずに、年齢を算出するか。
エクセル関数内に引数を代入する方法があれば教えていただけないでしょうか?
No.3ベストアンサー
- 回答日時:
そういう場合は、Evaluateを使います。
Sub macro()
Dim 開始日付 As Date
Dim 終了日付 As Date
Dim 年齢 As String
開始日付 = "S54/4/1"
終了日付 = "H22/4/1"
年齢 = Application.Evaluate("=datedif(""" & Format(開始日付, "yyyy/mm/dd") _
& """,""" & Format(終了日付, "yyyy/mm/dd") & """,""y"")")
MsgBox 年齢
End Sub
No.2
- 回答日時:
VBAのは「DateDif」ではなく、「DateDiff」と記述します。
VBAのDateDiff関数のヘルプを見ておいて下さい。
Sub macro()
Dim 開始日付 As Date
Dim 終了日付 As Date
Dim 年齢 As String
開始日付 = "S54/4/1"
終了日付 = "H22/4/1"
年齢 = DateDiff("yyyy", 開始日付, 終了日付)
MsgBox 年齢
End Sub
datediffを使用すると、アクセスのdatediffのように数え年の扱いになるようです。
たとえば、
開始日付="2008/12/31"
終了日付="2009/1/1"
とすると
年齢 = DateDiff("yyyy", 開始日付, 終了日付)
この場合、年齢が1歳になります。
なのでdatediffは使いたくないのですが・・・
No.1
- 回答日時:
質問のコードでは、開始、終了日付が文字列のままなので、
DateValueで、日付シリアルに直してから計算する
それと、Dateiffの引数の使い方も間違い。
また、年齢は数値ですから、
>Dim 年齢 As String
この宣言もIntegerなどに変えるべきです。
年齢 = DateDiff("yyyy", DateValue(開始日付), DateValue(終了日付))
以上です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
Excel→Accessへの日付データの...
-
Accessの日付時刻型から日付、...
-
VBA 別シートの同じ日付の欄に...
-
アクセス97のVBAで日付項目をヌ...
-
Access2000で重複データに・・・
-
sql update で 抽出条件データ...
-
Accessクエリで、予定した日付...
-
アクセスで月単位の抽出
-
指定日付を起点にして最新日付...
-
「今日の日付を含む」と言う条...
-
Accessでnow()で取り出した日付...
-
【エクセル】指定した日付に一...
-
ACCESSの空白をカウントする
-
今週分だけ表示させたい
-
VBAでの年齢計算がうまくいきま...
-
Accessで日付の比較がうまくい...
-
エクセル-過去6カ月分の合計を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
VBA 別シートの同じ日付の欄に...
-
Accessの日付時刻型から日付、...
-
BCPでCSV内の文字列をテーブル...
-
アクセスで月単位の抽出
-
Excel→Accessへの日付データの...
-
指定日付を起点にして最新日付...
-
Access クエリで、レコードの無...
-
ACCESSの空白をカウントする
-
【vba】日付の形式が勝手に変わ...
-
【エクセル】指定した日付に一...
-
アクセス:既定値に土日含まず...
-
Accessで日付の比較がうまくい...
-
【Accessで困っています...
-
Accessのデータ型の日付/時刻型...
-
クロス集計のユニオンクエリー...
-
アクセスの昇順並び替えで空白...
-
Accessでnow()で取り出した日付...
おすすめ情報