• ベストアンサー

エクセルVBAでお願いします。

エクセル2002使用です。 セルA1に 日付型で2004/9/25と間違いなく入っています。 その条件で下記のようにコードを打ちました。 Sub test() If Day(Range("A1")) = 30 Then MsgBox "yes" End If End Sub 25=30ならばmsgboxを表示なので、上記の例では表示してはいけないのに表示されます。 ちなみに=を<>不等号にしてもMsgboxが開きます。 おそらく型の問題だと思ったのですが、DAY関数はVariant型のintergerなので問題ないと思うのですが、理由がわかりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nagare
  • ベストアンサー率33% (280/831)
回答No.4

ORの使い方 間違ってますよ (^^) If Day(Range("A1")) = 30 Or Day(Range("A1")) =31 Then これでどうでしょうか?

ken123
質問者

お礼

nagare 様 早速のお返事ありがとうございます。 ありがとうございました。お騒がせしました。 この辺の基本的なことが・・・・ がんばりますので、今後ともよろしくお願いします。 ありがとうございました。

その他の回答 (3)

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.3

Sheet1のA1に2004/9/25 Sheet2のA1に2004/9/30 と入っていて、そのSubがSheet2内のSubなら、そのような動作になります。 VBE画面の左側にシートの一覧があります。 A1に2004/9/25と入っているシートをダブルクリックしてみてください。 右側にそのSubが表示されますか? 表示されたら、そのSubを実行してみてください。 それでも結果が変わらなかったら・・・分かりません(>_<)

ken123
質問者

お礼

すいません。解決しました。 ありがとうございます。 今後もよろしくお願いします。 が、がんばりまーす!!

ken123
質問者

補足

snoopy64 様(昨日から)ありがとうございます。 すいません。質問ミスでした。 If Day(Range("A1")) = 30 or 31 Then でうまくいきません。 お騒がせしていますが、よろしくお願いします。 ホント、すいません。

  • error123
  • ベストアンサー率21% (54/247)
回答No.2

試しましたが問題ありませんでした。 Sub test2() MsgBox Day(Range("A1")) End Sub としたらなんとでますか?

ken123
質問者

お礼

error123 様ありがとうごとうございます。 すいません。質問ミスでした。 If Day(Range("A1")) = 30 Or 31 Then でうまくいきません。(30のみ場合はOKです) Orの使い方が間違ってます??? すいません。ご指摘お願いします。

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.1

テストしましたが、表示しませんよ。 ちなみに、A1に2004/9/30を入れれば、 yesが表示されます。

ken123
質問者

お礼

すいません。お騒がせです。 ありがとうございます。 一応2つのPCでテストしたんですが・・・ 今後もよろしくお願いします。

関連するQ&A

専門家に質問してみよう