Excel VBA質問箱 IV

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

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


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

【65062】数値と文字の判別 きしやん 10/4/10(土) 20:18 質問[未読]
【65063】Re:数値と文字の判別 kanabun 10/4/10(土) 21:06 発言[未読]
【65064】Re:数値と文字の判別 きしやん 10/4/10(土) 21:24 質問[未読]
【65065】Re:数値と文字の判別 teian 10/4/10(土) 22:40 発言[未読]
【65066】Re:数値と文字の判別 きしやん 10/4/10(土) 23:13 質問[未読]
【65070】Re:数値と文字の判別 teian 10/4/11(日) 8:01 発言[未読]

【65062】数値と文字の判別
質問  きしやん E-MAIL  - 10/4/10(土) 20:18 -

引用なし
パスワード
   VBA超初心者です。
以下のコードで数値と文字の判別をしていますが。
IsNumeric(hia) Then のところだけMsgBox "日付が不正です"が
表示しません。
どなたか教えて頂けませんでしょうか。

Private Sub CommandButton1_Click()
hia = TextBox1
If hia = "" Then
  MsgBox "日付が不正です"
ElseIf IsDate(hia) Then
  If Year(CDate(hia)) < 1945 Then
  MsgBox "日付が不正です"
ElseIf IsNumeric(hia) Then
  MsgBox "日付が不正です"
Else
  MsgBox "OKです"
  Worksheets("Sheet1").Select
  Range("a10").Value = hia
End If
End If
End Sub

どうか宜しくお願いします。

【65063】Re:数値と文字の判別
発言  kanabun  - 10/4/10(土) 21:06 -

引用なし
パスワード
   ▼きしやん さん:

インデントが崩れていて読みにくいので修正して、
IsNumeric(数値化可能か調べる関数) の位置も 変更しましたが、
これで TextBoxに
「12345」など数値化できる文字列を入力して試してみてください。

Option Explicit

Private Sub CommandButton1_Click()
 Dim hia As String
 hia = TextBox1.Text
 If Len(hia) = 0 Then
   MsgBox "入力がありません"
 ElseIf IsNumeric(hia) Then
     MsgBox "日付が不正です"
 ElseIf IsDate(hia) Then
   If Year(CDate(hia)) < 1945 Then
     MsgBox "大昔の日付です!"
   Else
     MsgBox "OKです"
     Worksheets("Sheet1"). _
       Range("A10").Value = CDate(hia)
   End If
 End If
End Sub

【65064】Re:数値と文字の判別
質問  きしやん E-MAIL  - 10/4/10(土) 21:24 -

引用なし
パスワード
   ▼kanabun さん:
>
早速の回答ありがとうございました。
説明不足で申し訳ありませんだした。
TextBoxが空白
TextBoxが3/32のようなあり得ない日付
TextBoxがzzzのような文字
以上のような入力値の場合MsgBoxを表示したかったのですが

kanabun さんのコードを試してみましたが、zzzのような
文字はMsgBoxは表示しませんでした。
他の方法があればご教授下さい。


▼きしやん さん:
>
>インデントが崩れていて読みにくいので修正して、
>IsNumeric(数値化可能か調べる関数) の位置も 変更しましたが、
>これで TextBoxに
>「12345」など数値化できる文字列を入力して試してみてください。
>
>Option Explicit
>
>Private Sub CommandButton1_Click()
> Dim hia As String
> hia = TextBox1.Text
> If Len(hia) = 0 Then
>   MsgBox "入力がありません"
> ElseIf IsNumeric(hia) Then
>     MsgBox "日付が不正です"
> ElseIf IsDate(hia) Then
>   If Year(CDate(hia)) < 1945 Then
>     MsgBox "大昔の日付です!"
>   Else
>     MsgBox "OKです"
>     Worksheets("Sheet1"). _
>       Range("A10").Value = CDate(hia)
>   End If
> End If
>End Sub

【65065】Re:数値と文字の判別
発言  teian  - 10/4/10(土) 22:40 -

引用なし
パスワード
   必ず、何らかのメッセージが必要ってことですかね?
であれば、もうひとつElseが必要なのでは?

Private Sub CommandButton1_Click()
 Dim hia As String
 Dim msg As String
 hia = TextBox1.Text
 If Len(hia) = 0 Then
   msg = "入力がありません"
 ElseIf IsNumeric(hia) Then
     msg = "日付が不正です"
 ElseIf IsDate(hia) Then
   If Year(CDate(hia)) < 1945 Then
     msg = "大昔の日付です!"
   Else
     msg = "OKです"
     Worksheets("Sheet1"). _
       Range("A10").Value = CDate(hia)
   End If
 Else
   msg = "その他の文字列です"
 End If
 MsgBox msg
End Sub

【65066】Re:数値と文字の判別
質問  きしやん E-MAIL  - 10/4/10(土) 23:13 -

引用なし
パスワード
   ▼teian さん
ありがとうございました。
解決しました。
超初心者ですので併せてお伺いしたいのですが
Dim msg As StringとMsgBox msgの関係、順番とか
MsgBox = msgと記述すべきかVBAを理解出来ていないので
併せてご教授願えれば幸いです。


▼teian さん
>必ず、何らかのメッセージが必要ってことですかね?
>であれば、もうひとつElseが必要なのでは?
>
>Private Sub CommandButton1_Click()
> Dim hia As String
> Dim msg As String
> hia = TextBox1.Text
> If Len(hia) = 0 Then
>   msg = "入力がありません"
> ElseIf IsNumeric(hia) Then
>     msg = "日付が不正です"
> ElseIf IsDate(hia) Then
>   If Year(CDate(hia)) < 1945 Then
>     msg = "大昔の日付です!"
>   Else
>     msg = "OKです"
>     Worksheets("Sheet1"). _
>       Range("A10").Value = CDate(hia)
>   End If
> Else
>   msg = "その他の文字列です"
> End If
> MsgBox msg
>End Sub

【65070】Re:数値と文字の判別
発言  teian  - 10/4/11(日) 8:01 -

引用なし
パスワード
   質問の意味がよくわかりませんが、
関係?
msgは単なる変数ですが、MsgBoxは関数であり、
Excel君になんらかのアクションをしろという命令文の一つです。
なお、MsgBox msgはお分かりかとは思いますが、
msgの内容を表示してくれってことですよ。
順番?ってのも意味がわかりませんが、
Dim msg as stringの宣言の場所ってことですかね?
変数msgを使うより前ならいつでも大丈夫なはずです。
一般にはプロシージャの最初に纏めて宣言しますが。

>MsgBox = msgと記述すべきか
この表現は、一般的に変数に値(別の変数に抑えられている値)を代入する
という表記です。
なので多分、関数に対して値を代入しろって命令は受け付けてくれないと思いますね。
詳しくは、MsgBoxのヘルプでも確認すればいいでしょう。

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