|
ボタンを押したとき最初にする処理は、テキストボックスの値が
目的どおりの形になっているかどうか、の判定です。
で、その質問から目的の形を定義したとき「数値+ハイフン+数値」
とするなら、最も厳密な判定ができそうなのは"正規表現"である
ような気がします。ただ、それを使うとコードは長く複雑になり、
メンテナンス性が悪くなる懸念があるので、とりうえずExcelが持っている
関数やプロパティ等だけを使って、簡易に判定した方が良いでしょう。
例えばこのようなコードです。
Private Sub CommandButton1_Click()
Dim Pt As Integer
Dim GetV As Variant
Dim Num As Long
With TextBox1
Pt = InStr(1, .Text, "-")
If Pt < 2 Or Pt = Len(.Text) Then Exit Sub
GetV = Mid(.Text, Pt + 1)
If Not IsNumeric(GetV) Then Exit Sub
Num = Val(GetV) + 1
.Text = Left(.Text, Pt) & Num
End With
End Sub
テキストボックスの値を変更するコードなので、フォームモジュールにはTextBox1_Change のようなイベントマクロを入れてはいけません。
どうしても必要なら
>.Text = Left(.Text, Pt) & Num
の前後に Application.EnableEvents を設定するコードを入れ、
イベントが走るのを止めたり復活させたりして制御して下さい。
|
|