• ベストアンサー

一致しない場合の処理・・

エクセル2003です。 Sub 練習()  入力 = UserForm1.TextBox1.Text If 入力 = "" Then     MsgBox"日付を入力してください" End Sub この状況の場合、テキストボックスに何も入力しないと 日付を入力してくださいと出るような状態です。 これを、テキストボックスに ○/△の形式で入力されていない場合は 日付を正しく入力してくださいと表示したいのですが どうしたらいいでしょうか? できれば、AB/CDの形でABCDがとり得る範囲外の場合 に日付を正しく入力してくださいと表示したいです Aのとり得る範囲は0,1 Bは0~9 Cは0~3 Dは0~9です

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

  • ベストアンサー
  • arne
  • ベストアンサー率83% (5/6)
回答No.4

Sub 練習()  If not IsDate(UserForm1.TextBox1.Text) Then   Msgbox "日付を入力して下さい"  End If End Sub はいかがでしょうか。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。#2のWendyです。 #3さんの >VBもVBAも正規表現は標準ではできなかったはずですから CreateObject("VBScript.RegExp") だと思います。 それと、#2で私が書いたのは、 strDate = CStr(Year(Date)) & "/" & strDate 単に、そのまま、IsDate(strDate) と入れてしまうと、"11/31" は、False としては出てきません。11月31日は、存在しませんから間違いですね。

すると、全ての回答が全文表示されます。
  • parapa
  • ベストアンサー率15% (42/273)
回答No.3

まずABとCDとすべてテキストボックスを 分離するのが簡単ですね。 AB/CDを □/□として □一つが一つのテキストボックス /はラベルで作成 で最初のテキストボックスには1~12 後者の適すボックスには1~31 までの数字が入ってあとの数字がNGになるように すればいいのでは? if 月txtbox が1~12 and 日txtbox が1~31 ってのをプログラミングしてやればいいと思いますよ。 そうすれば「/」の部分に悩まされることはないでしょう。 数字だけの制御に集中できます。 どうしても1つのテキストボックスで行いたいなら 正規表現が便利ですね。 ただVBもVBAも正規表現は標準ではできなかったはずですから 正規表現の部分をDLL(フリーであります) に任せてやる必要があるかもしれません。 VBAがDLLの呼び出しができれば (VBでしか試したことないので) http://www.asahi-net.or.jp/~dp8t-asm/java/tips/RegexCollection.html こんな感じで制御して

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 ユーザーが、どのように入れるにしても、日付型として取れるものなら、OKとし、そうでなければ、ダメとすればよいわけです。 11/30 と 11/31 と比較してみてください。 もちろん、空の状態でも、"日付を入力してください"、と出るはずです。 Sub TestSample() Dim strDate As String strDate = "11/30" '比較 11/31 strDate = CStr(Year(Date)) & "/" & strDate If IsDate(strDate) Then  '別の作業に進む Else  MsgBox "日付を入力してください" End If End Sub

すると、全ての回答が全文表示されます。
  • yamada_28
  • ベストアンサー率43% (21/48)
回答No.1

1.やりたいことがはっきりしているので、まずはやりたいことを一覧にまとめてみましょう。 ○やりたいこと Aは0または1だけ許可する。それ以外は× Bは0~9の範囲だけ許可する。それ以外は× Cは0~3の範囲だけ許可する。それ以外は× Dは0~9の範囲だけ許可する。それ以外は× 2.そうすると、前提条件が見えてくると思います。 ○前提条件 A、B、C、Dには必ず何か文字が入っていないとだめ。つまり、「かならず4文字」である。 3.後は、この法則にしたがってVBAを組んでいけばよいです。 [ヒント]判定するためのIF文と、1文字目、2文字目、3文字目、4文字目を抜き出すためのMID関数。これを使えばあなたがやりたい事が実現できます。ヘルプ見るなり、インターネットで調べるなりして少しずつ身につけましょう。 がんばって!

すると、全ての回答が全文表示されます。

関連するQ&A