Excel VBA質問箱 IV

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

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


11122 / 13644 ツリー ←次へ | 前へ→

【17984】Date関数でどうやってVBAを取り組む? さる 04/9/12(日) 0:32 質問[未読]
【17986】Re:Date関数でどうやってVBAを取り組む? かみちゃん 04/9/12(日) 0:43 回答[未読]
【17992】Re:Date関数でどうやってVBAを取り組む? さる 04/9/12(日) 1:47 お礼[未読]
【17988】Re:Date関数でどうやってVBAを取り組む? Kein 04/9/12(日) 1:08 回答[未読]
【17990】Re:Date関数でどうやってVBAを取り組む? さる 04/9/12(日) 1:39 お礼[未読]

【17984】Date関数でどうやってVBAを取り組む?
質問  さる E-MAIL  - 04/9/12(日) 0:32 -

引用なし
パスワード
   今まではDate関数で使っていますが
シートにDate関数を貼っていますがマクロ化になると
数値がないと#NUM!と表示してしまう。
数値がなければ空白のままでしたい。
別のボタンで実行したら自動に日付を表示したい。

シート1(数値だけ入力)
A   B  C
2004   9  12

シート2
 H
=DATE(シート1!A1,シート1!B1,シート1!C1)で2004/9/12と表示します。

VBAするとどうやって命令文を作りますか?
教えていただけませんか? 参考本も載せていませんが
どうかよろしくお願いします。

シート1のセル値からシート2へ日付を表示するだけです。

【17986】Re:Date関数でどうやってVBAを取り組む?
回答  かみちゃん  - 04/9/12(日) 0:43 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>今まではDate関数で使っていますが
>シートにDate関数を貼っていますがマクロ化になると
>数値がないと#NUM!と表示してしまう。

マクロでなくてもエラーになります。
とりあえず
=IF(ISERR(DATE(Sheet1!A1,Sheet1!B1,Sheet1!C1)),"",DATE(Sheet1!A1,Sheet1!B1,Sheet1!C1))
で、エラーの場合は、空白になります。

>別のボタンで実行したら自動に日付を表示したい。

Date ステートメントのことでしょうか?
ヘルプを見てください。

>VBAするとどうやって命令文を作りますか?

VBAでやらなくても、一般関数でできますが?
VBAだとIsDate関数があります。
If IsDate(日付文字列) Then
 日付の処理
Else
 日付ではない場合の処理
End If

【17988】Re:Date関数でどうやってVBAを取り組む?
回答  Kein  - 04/9/12(日) 1:08 -

引用なし
パスワード
   3つの数値が入力されているかチェックする、ということで数式を作ると・・

=IF(COUNT(シート1!A1:C1)=3,DATE(シート1!A1,シート1!B1,シート1!C1),"")

コードにすると・・

Dim MyD As Date

With Sheets("シート1")
  If WorksheetFunction.Count(.Range("A1:C1")) < 3 Then
   MsgBox "空白セルがあります", 48: Exit Sub
  Else
   MyD = _
   DateSerial(.Range("A1").Value, .Range("B1").Value, .Range("C1").Value)
   Sheets("シート2").Range("H1").Value = Format(MyD, "yyyy/m/d")
  End If
End With

と、なりますが、どちらもエラーが出ない保証はありません。出鱈目な数値の場合など。

【17990】Re:Date関数でどうやってVBAを取り組む?
お礼  さる E-MAIL  - 04/9/12(日) 1:39 -

引用なし
パスワード
   ▼Kein さん:
>DateSerial関数があって知らなかった。実行してみたら
成功させました。Dateだけ取り組むとエラーなるし、どうやって引数を呼ぶか
いろいろ悩んでいました。
アドバイスいただき本当に感謝しております。

VBA研究所がいたから成功できたと思う。もしなければ苦悩の山を積むかも?

心より感謝しております。

【17992】Re:Date関数でどうやってVBAを取り組む?
お礼  さる E-MAIL  - 04/9/12(日) 1:47 -

引用なし
パスワード
   ▼かみちゃん さん:
ありがとうございます。説明不足で申し訳はありません。

IF関数も使っていますがマクロでクリアすると数式が消えてしまう。
クリア後でも数式を使わずにVBAで取り組むわけです。

他の回答(Keinさん)がDateSerial関数のことを教えてもらって
勉強になりました。

やはりVBAは奥が深いです。私もヘルプ探して努力していきたいと思います。

アドバイスありがとうございました。

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