[リストへもどる]
一括表示

投稿時間:2003/06/20(Fri) 17:15
投稿者名:まな
Eメール:
URL :
タイトル:
文字列を数値に変換する方法
質問っす。
「テキストボックスに数値しか入力出来ないように制限する関数(改良型)」
をうまく利用して、ある変数の文字列内を数値制限をかける方法を教えてください。

(例)
a = "-0.005A・・・・" を "-0.005" に変換する方法

宜しくお願いします♪

投稿時間:2003/06/20(Fri) 17:34
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 文字列を数値に変換する方法
あれは1文字づつチェックしているのでそのまま応用できますが。
複雑な処理をしている訳ではないので、順をおってよくご覧になれば
もっといいものが出来ると思います。

投稿時間:2003/06/20(Fri) 18:18
投稿者名:まな
Eメール:
URL :
タイトル:
Re^2: 文字列を数値に変換する方法
出来ました!が、ちょっとしょぼい物になってしまったようです。
スマートに作りかえれますでしょうか?(汗)

テキストボックス2個用意しました。


Option Explicit     'SampleNo=069 WindowsXP VB6.0(SP5) 2002.05.15

Private Const Hennsuu1 = "-0.005A"
Private Hennsuu2 As String

Private Function fTextBoxNumberCheck(ByRef MyTextBox As String) As String
    Dim i As Long

    '入力文字を1文字づつチェック
    For i = 1 To Len(MyTextBox)
        '最初の1文字目以外に−が入っていたら削除
        If Mid$(MyTextBox, i, 1) = Chr$(45) And i <> 1 Then
            fTextBoxNumberCheck = True
            '- を文字列から抜き取りテキストボックスに代入
            MyTextBox = Mid$(MyTextBox, 1, i - 1) & _
                    Mid$(MyTextBox, i + 1, Len(MyTextBox) - i)
            Beep
            'カーソル位置をテキストの末尾へ
            MyTextBox = Len(MyTextBox)
            
            Exit Function
        End If
        '0〜9 - . 及び Enter Tab 等の制御文字以外を削除
        If Mid$(MyTextBox, i, 1) >= Chr$(32) And Mid$(MyTextBox, i, 1) _
                < Chr$(45) Or Mid$(MyTextBox, i, 1) _
                    > Chr$(57) Or Mid$(MyTextBox, i, 1) = Chr$(47) Then

            '以下上記同様の処理
            MyTextBox = Mid$(MyTextBox, 1, i - 1) & _
                    Mid$(MyTextBox, i + 1, Len(MyTextBox) - i)
            Beep
            Text2.Text = MyTextBox
            Exit Function
        End If
    Next i
    
End Function

Private Sub Form_Load()
    Text1.Text = Hennsuu1
End Sub

Private Sub Text2_Change()
    Dim Result As String
    Result = fTextBoxNumberCheck(Hennsuu1)
End Sub

投稿時間:2003/06/20(Fri) 18:32
投稿者名:まな
Eメール:
URL :
タイトル:
Re^3: 文字列を数値に変換する方法
> 出来ました!が、ちょっとしょぼい物になってしまったようです。
> スマートに作りかえれますでしょうか?(汗)
>
> テキストボックス2個用意しました。
>
>
> Option Explicit     'SampleNo=069 WindowsXP VB6.0(SP5) 2002.05.15
>
> Private Const Hennsuu1 = "-0.005A"
> Private Hennsuu2 As String
>
> Private Function fTextBoxNumberCheck(ByRef MyTextBox As String) As String
>     Dim i As Long
>
>     '入力文字を1文字づつチェック
>     For i = 1 To Len(MyTextBox)
>         '最初の1文字目以外に−が入っていたら削除
>         If Mid$(MyTextBox, i, 1) = Chr$(45) And i <> 1 Then
>             fTextBoxNumberCheck = True
>             '- を文字列から抜き取りテキストボックスに代入
>             MyTextBox = Mid$(MyTextBox, 1, i - 1) & _
>                     Mid$(MyTextBox, i + 1, Len(MyTextBox) - i)
>             Beep
>             'カーソル位置をテキストの末尾へ
>             MyTextBox = Len(MyTextBox)
>            
>             Exit Function
>         End If
>         '0〜9 - . 及び Enter Tab 等の制御文字以外を削除
>         If Mid$(MyTextBox, i, 1) >= Chr$(32) And Mid$(MyTextBox, i, 1) _
>                 < Chr$(45) Or Mid$(MyTextBox, i, 1) _
>                     > Chr$(57) Or Mid$(MyTextBox, i, 1) = Chr$(47) Then
>
>             '以下上記同様の処理
>             MyTextBox = Mid$(MyTextBox, 1, i - 1) & _
>                     Mid$(MyTextBox, i + 1, Len(MyTextBox) - i)
>             Beep
>             Text2.Text = MyTextBox
>             Exit Function
>         End If
>     Next i
>    
> End Function
>
> Private Sub Form_Load()
>     Text1.Text = Hennsuu1
> End Sub
>
> Private Sub Text2_Change()
>     Dim Result As String
>     Result = fTextBoxNumberCheck(Hennsuu1)
> End Sub

投稿時間:2003/06/20(Fri) 18:34
投稿者名:まな
Eメール:
URL :
タイトル:
うまく、いかないです。
すいません。2重投稿してしましました。

さきほど乗せた物はうまく、動きませんでした。
「・・・・・」を入れると、失敗でした。

花ちゃんさんの関数だとうまく動きます。差がわかりません。
教えてください。

投稿時間:2003/06/20(Fri) 18:40
投稿者名:Say
Eメール:
URL :
タイトル:
Re: うまく、いかないです。
参考までに
「数字以外が出現したらそれ以降は無視」でよければ
a = Val("-0.005A・・・・")

投稿時間:2003/06/21(Sat) 17:55
投稿者名:まな
Eメール:
URL :
タイトル:
お礼
これを使います。a = Val("-0.005A・・・・")
ありがとうございました♪