- ベストアンサー
ExcelVBAを使った日付の求め方
ExcelVBAでの質問です。 セルA1に日付2005/07/25と入力されています。 セルB1にその一年後を求めた値を返したいのです。 通常では =DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)) の式で求める事が出来るのですが、VBAで書こうとするとエラーがでてしまいます。 どのようにすれば良いか教えてください。 ※VBAについては殆ど初心者の為、詳しく教えて頂けると有難いです。 宜しくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
実行できない、というのはエラーが出るということでしょうか? それともそのコードを実行する方法がわからないということでしょうか? 前者でしたら間違いがないか良く見直してください。 後者でしたら、VBAのソースを実行するにはトリガ(例えばボタンを押す、など)が必要です(直に実行することもできますが)。 とりあえずシート上にボタンを貼り付けてみてください。 ツールバーに表示されていなかったらツールバー上で右クリックしフォームを選んでください。 その中にボタンというのがあるのでクリックしシート上に配置してください。 ドラッグすれば好きな大きさで配置されます。 そうすると「マクロの登録」という画面がでるのでそのまま新規作成をクリックしてください。 今度は Microsoft Visual Basic というのが立ち上がり、エディタの中にはこんな感じになっているはずです。 Sub ボタン4_Click() End Sub この中に先ほどのコードを記入してください。 こうなります。 Sub ボタン4_Click() Cells(1, 2) = DateAdd("yyyy", 1, Cells(1, 1)) End Sub 終わったらこの画面は閉じてよいです。 先ほどのシート上にあるボタンをクリックしてください。 実行されるはずです。
その他の回答 (4)
- sato-tya
- ベストアンサー率36% (108/296)
回答ではないんですが TOP > コンピューター [家庭向け] > ソフトウェア > Office系ソフト で聞いた方がよろしいかと思うんですが・・・。
お礼
はい・・・確かに(^_^;) 以後気をつけます。 ご指摘有難うございました。
- imogasi
- ベストアンサー率27% (4737/17069)
>VBAで書こうとするとエラーがでてしまいます プログラムのことを聞きながら、自分のコードを書かないのはおかしい。 Sub test01() y = Year(Range("a1")) MsgBox y m = Month(Range("a1")) MsgBox m d = Day(Range("a1")) MsgBox d d = DateSerial(y + 1, m, d) MsgBox d End Sub は答えが出たが、これではダメですか。 来年の同月応答日を出したもの。 MSGBOXは確認用。
お礼
ttyp03様同様お礼が遅くなってしまい申し訳ありません。 おっしゃる通り自分のコードを書くべきでした。 今後は気をつけたいと思います。 有難うございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
vbaの場合は#1の方のDateaddで行うか =DateSerial(Year(Cells(1, 1))+1,MONTH(Cells(1, 1)),DAY(Cells(1, 1)))
補足
(>_<)エラーが出てしまいます。 根本的に私の知識が足りなさすぎですね・・・(/_;)
- ttyp03
- ベストアンサー率28% (277/960)
DateAddという関数があります。 Cells(1, 2) = DateAdd("yyyy", 1, Cells(1, 1))
補足
早速試してみたのですが、実行ができません。 私には高度すぎるようです(>_<)。。。
お礼
お礼が随分遅くなりまして申し訳ありません。 この質問をした直後に吐血し、胃潰瘍になって入院してしまっていました(-_-;) この問題は他の方が引き継ぎした模様。。。 ですが、先程ご回答頂いたコードを試した所、実行することができました。 今となってはなぜあの時実行できなかったのかが不明です(^_^;) 有難うございました。