アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel VBAでTextBoxに入力された数値が整数か小数か判定し、
小数の場合は、下記のようにしたいのですが、どのようにしたらよいのでしょうか。

TextBoxに入力された数値が、
(1)整数の場合・・・A=TextBox1.Value
(2)小数点第一位の場合(1.5など)・・・A=TextBox1.Value*10
(3)小数点第二位の場合(1.55など)・・・A=TextBox1.Value*100

どなたかご教授願います。

A 回答 (4件)

前提として、数値違いの文字や、"."が2個以上記入された場合等は事前にチェックしているものとします。



整数か少数かは、InStrで"."があるかどうかで判断できます。
また、InStrの結果から小数点以降の桁数を算出することができます。

あとは 入力値*(10^桁数) としてあげればよいでしょう。


Dim text As String
text = "12.345"

Dim value As Integer
Dim dec As Integer '小数点の位置
Dim declen As Integer '小数点の桁数

dec = InStr(text, ".")

' 小数点がなければ整数
If dec = 0 Then
value = CInt(text)

' 小数点がある
Else
declen = Len(text) - dec '小数部分の桁数を算出
value = CInt(Val(text) * (10 ^ declen))

End If

MsgBox (value)



もうひとつ、少々乱暴な方法ですがReplaceで"."を取り外してしまうとか

Dim text As String
text = "12.345"

Dim value As Integer
value = CInt(Replace(text, ".", ""))

MsgBox (value)
    • good
    • 1

ユーザーフォームにコマンドぼたんとテキストボックスをはりつけ。


コマンドボタンのクリックイベントに
Private Sub CommandButton1_Click()
a = TextBox1.Text
MsgBox a
If IsNumeric(a) Then
Else
MsgBox "数字で在りません"
Exit Sub
End If
p = InStr(a, ".")
If p = 0 Then
Cells(1, "A") = Val(a)
Else
Cells(1, "A") = Val(a) * 10 ^ (Len(a) - p)
End If
End Sub
セル A1に値を設定。
    • good
    • 0

数値かどうかの判断:IsNumeric


数値化:Val(倍制度実数への変換)、CDec(10進数への変換)
文字列化:CStr
文字位置の検索:InStr
(1)数値かどうかを判断する。非数値ならエラー
(2)数値化してから文字列化する。
(3)"."(ピリオド)の位置を検索する。
(4)ピリオドが存在した場合、文字列長-検索位置→Xとする。
 (数値 * 10 ^ X)を文字列化する。
(5)文字列をテキストボックスのValueとする。

※倍制度実数の10進換算精度は15桁、10進数は29桁
    • good
    • 0

・小数点が入力された文字列にあるか判定


・有った場合、其れよりも右に何文字有るか確認
・数値として文字数分だけ10の何乗かを掛ける
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A