| 
    
     |  | ボタンを押したとき最初にする処理は、テキストボックスの値が 目的どおりの形になっているかどうか、の判定です。
 で、その質問から目的の形を定義したとき「数値+ハイフン+数値」
 とするなら、最も厳密な判定ができそうなのは"正規表現"である
 ような気がします。ただ、それを使うとコードは長く複雑になり、
 メンテナンス性が悪くなる懸念があるので、とりうえず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 を設定するコードを入れ、
 イベントが走るのを止めたり復活させたりして制御して下さい。
 
 
 |  |