
失礼いたします。
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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
VBA 別シートの同じ日付の欄に...
-
アクセスで日付を入力すると曜...
-
【エクセル】指定した日付に一...
-
エクセル-過去6カ月分の合計を...
-
ピボットテーブルの日付を週ご...
-
ビュー定義をプログラムで動的...
-
ACCESS・重複データ入力をエラーに
-
BCPでCSV内の文字列をテーブル...
-
Access:フォームのデータの並び順
-
ACCESS で、古い日付順に抽出し...
-
アクセス:既定値に土日含まず...
-
Accessで日付の比較がうまくい...
-
アクセスで月単位の抽出
-
アクセス97のVBAで日付項目をヌ...
-
アクセスの昇順並び替えで空白...
-
日付/時刻型フィールドで時刻デ...
-
Excel→Accessへの日付データの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
VBA 別シートの同じ日付の欄に...
-
アクセスで日付を入力すると曜...
-
アクセス:既定値に土日含まず...
-
Excel→Accessへの日付データの...
-
Accessの日付時刻型から日付、...
-
BCPでCSV内の文字列をテーブル...
-
エクセル-過去6カ月分の合計を...
-
Access クエリで、レコードの無...
-
前のレコードの合計に現レコー...
-
ACCESSの空白をカウントする
-
指定日付を起点にして最新日付...
-
Accessのデータ型の日付/時刻型...
-
【vba】日付の形式が勝手に変わ...
-
ビュー定義をプログラムで動的...
-
アクセスで月単位の抽出
-
【エクセル】指定した日付に一...
-
Accessで日付の比較がうまくい...
おすすめ情報