<Access Form TextBoxの.SelLength .SelStartプロパティ>
こんにちは、三流プログラマーKen3です。 今回は、 Access のテキストボックスの .SelLength (選択文字数) .SelStart (選択開始位置) です。/* * 1.今回のキッカケ */
下記の質問をBBS( http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi )で貰いました >おなまえ:MachineUser >タイトル:キャンセル処理後の選択 > >AccessでのVBAでフォーム上にあるテキストボックスの中身のチェックを >BeforeUpdateイベントにて行っているのですが、間違った値を入力したと >きにキャンセル処理をさせています。 >このキャンセル処理をさせた後、入力文字列を選択状態にしたいのですが、 >どのようにすればよろしいのでしょうか? ---- と質問がありました。/* * 2._BeforeUpdateで処理をキャンセルする */
まずは、ノーマルなキャンセル処理を書きます。 更新前のイベント処理 頭文字がA,X,Z 番号が100〜999をチェック データはA-201,X-777,Z-234などの形式 *入力禁則でできそうってのは、置いといて、
Private Sub 依頼表No1_BeforeUpdate(Cancel As Integer)
Dim ErrFLG As Boolean
Dim nCHKNO As Long
Dim strKUBUN As String
strKUBUN = Left(Me![依頼表No1], 1) 'チェックする頭文字の代入
nCHKNO = Val(Mid(Me![依頼表No1], 3)) '番号を変換
ErrFLG = False 'フラグにFalseを初期代入
'頭文字のチェック
If strKUBUN <> "A" And strKUBUN <> "X" And strKUBUN <> "Z" Then
ErrFLG = True 'ERRをONにする
End If
'コード範囲のチェック
If nCHKNO < 100 Or 999 < nCHKNO Then '100より下、999より上か?
ErrFLG = True 'ERRをONにする
End If
'エラーの判断
If ErrFLG = True Then
MsgBox "データはA-201,X-777,Z-234などの形式で入力してね", vbExclamation, "エラー"
Cancel = True
End If
End Sub |
SelLength、SelStart、SelText プロパティが見つかりました
ヘルプを見ると、
SelLength コントロールで選択されている文字数を示します。
SelStart 選択されたテキストの先頭、またはテキストが選択されていない場合は、
カーソルの位置を示します。
SelText プロパティは、選択されたテキストの文字列を示します。
コイツを使って、エラー処理の時、勝手に文字を選択します。
'エラーの判断
If ErrFLG = True Then
Me![依頼表No1].SelStart = 0 '先頭から
Me![依頼表No1].SelLength = Len(Me![依頼表No1]) '文字数分選択する
MsgBox "データはA-201,X-777,Z-234などの形式で入力してね", vbExclamation, "エラー"
Cancel = True
End If
と、エラーの時、
.SelStart = 0 で先頭から
.SelLength = Len(Me![依頼表No1]) で文字数分反転選択させます
-- 余談 --
今回はSelTextは使わなかったけど選択された一部を見たい時などに使ってみてね。
プロパティ、メソッドの探り方
http://www.ken3.org/vba/excel-help.html
こっちもヨロシク
Private Sub 依頼表No1_BeforeUpdate(Cancel As Integer)
Dim nCHKNO As Long
Dim strKUBUN As String
strKUBUN = Left(Me![依頼表No1], 1) 'チェックする頭文字の代入
nCHKNO = Val(Mid(Me![依頼表No1], 3)) '番号を変換
'頭文字のチェック
If strKUBUN <> "A" And strKUBUN <> "X" And strKUBUN <> "Z" Then
Me![依頼表No1].SelStart = 0 '先頭から
Me![依頼表No1].SelLength = 1 '間違いは頭文字なので
MsgBox "頭文字はA,X,Z です", vbExclamation, "頭文字エラー"
Cancel = True 'キャンセルをセットして
Exit Sub '関数を途中で抜ける
End If
'コード範囲のチェック
If nCHKNO < 100 Or 999 < nCHKNO Then '100より下、999より上か?
Me![依頼表No1].SelStart = 2 '数値のエリア開始位置
Me![依頼表No1].SelLength = 99 '文字数をオーバーしてセットしてみたら?
MsgBox "コードは100〜999までです", vbExclamation, "コード範囲エラー"
Cancel = True 'キャンセルをセットして
Exit Sub '関数を途中で抜ける
End If
End Sub |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
|
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]