Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


34538 / 76734 ←次へ | 前へ→

【47404】Re:数字の更新
回答  Kein  - 07/3/9(金) 14:02 -

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

【47391】数字の更新 ねこ 07/3/9(金) 11:44 質問
【47393】Re:数字の更新 ああ 07/3/9(金) 11:53 回答
【47404】Re:数字の更新 Kein 07/3/9(金) 14:02 回答
【47420】Re:数字の更新 ねこ 07/3/9(金) 15:16 お礼

34538 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free