指定位置に"-"を挿入するには?

解決


サキ  2005-04-24 02:06:45  No: 121220  IP: [192.*.*.*]

XXXX-XX-XX-Xというように4文字入力したら"-"を自動挿入、さらに
2文字入力したらまた"-"挿入するようにしたいのですが
SelStartプロパティやSelTextプロパティをしようすればできる
ようなことが書いてあったのですがいまいちわかりません。。

宜しくお願いします。
環境はVB6.0です

編集 削除
Say  2005-04-24 07:49:20  No: 121221  IP: [192.*.*.*]

SelStart,SelText云々はともかく、
ChangeイベントでTextプロパティを編集すれば可能ですが、
TextBoxの話なら、MaskEditコントロール使ったほうが簡単では?

編集 削除
サキ  2005-04-24 08:21:24  No: 121222  IP: [192.*.*.*]

Sayさん回答ありがとうございます。
上記の質問内容に書いていませんでしたが入力する所は
スプレッドです。
スプレッドの場合もMaskEditコントロールは使用できますか?
普通のテキストの場合だとMaskEditコントロールで簡単に
できますね。いろいろ勉強になります!ありがとうございます!

編集 削除
サキ  2005-04-24 10:07:09  No: 121223  IP: [192.*.*.*]

スプレッドの場合だと入力してENTER押下時にしかchangeイベントが
発生しなかったのでKeyDownイベントに
        If .ActiveRow = 1 Then
            Ret = .GetText(.ActiveCol, .ActiveRow, Kenshu)
            If Len(A) = 4 Then
                A= Replace(A, A, A & "-")
                .SetText 1, 1, Kenshu
            End If
        End If
と書いてみたのですが"-"挿入時に文字列が選択状態になってしまい
続けて入力すると4桁の文字列がクリアされてしまいます。

選択状態にしないで続けて次の数字を入力させるにはどうしたらよいでしょうか。

編集 削除
サキ  2005-04-25 01:48:45  No: 121224  IP: [192.*.*.*]

Ret = .GetText(.ActiveCol, .ActiveRow, A)
If Len(A) = 4 Then
    .SelStart = 4
    .SelLength = 4
    .SelText = "-"
End If

と記述すると4桁目と5桁目の間に"-"が挿入できるようになりましたが
今度はバックスペースで削除していくと4行目以前の文字が削除されなくなり
ます。

編集 削除
LESIA  2005-04-25 09:16:04  No: 121225  IP: [192.*.*.*]

バックスペースのときは、なにもしなければ良いのでは?
If KeyCode = vbKeyBack Then Exit Sub

編集 削除
サキ  2005-04-25 09:59:29  No: 121226  IP: [192.*.*.*]

そうですね、バックスペースのとき"なにもしない"と
判定を追加したらうまくいきました。

LESIAさんありがとうございました!

編集 削除