こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ExcelVBAで文字列の制御をしたいのですが

セルに5文字の数字を文字列として取り込む入力規制をしているのですが、現段階では小数点を入力してもチェックにはじかれません。

小数点その他記号等チェックではじきたいので以下のようなマクロを組みました。

Dim A As String  ’値の取得用の変数
Dim i As Integer 'ループカウンタ


For i = i To 5
'左からi個の数値を取り出す
A = Left(target.Text, i)

'取り出した数の右側の文字を検索(小数点があるとすればこの位置)
If Len(A) = 2 Then
A = Right(A, i)
End If

If Len(A) = 3 Then
A = Right(A, i)
End If

If Len(A) = 4 Then
A = Right(A, i)
End If

If Len(A) = 5 Then
A = Right(A, i)
End If

'取り出した文字が数値以外ならメッセージを表示
If IsNumeric(A) = False Then
Call MsgBox("数値以外が入力されています", vbExclamation)

Next

これでも何とか希望通りの動きはしたのですが、あまりスマートなプログラムに思えません。

不勉強で申し訳ありませんが、関数で○文字目、ひと文字だけを検索できるもはないのでしょうか?
そうすればスマートにいきそうなのですが...


このプログラムをもっとスマートな形にできる方法をご存知の方がいらっしゃれば、ご教授お願いします。

投稿日時 - 2007-07-23 23:14:36

QNo.3193823

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

>関数で○文字目、ひと文字だけを検索できるもはないのでしょうか?
Mid関数です。

For i = i To 5
  '左からi個の数値を取り出す
  A = mid(target.Text, i, 1)
  If IsNumeric(A) = False Then
    Call MsgBox("数値以外が入力されています", vbExclamation)
  End if
Next i

別解として、

if trim(format(val(target.Text)), "#")<>trim(target.Text) then
  Call MsgBox("数値以外が入力されています", vbExclamation)
End if
あたりはどうでしょう?

投稿日時 - 2007-07-23 23:34:06

あなたにオススメの質問