
No.1ベストアンサー
- 回答日時:
> フォームでバーコードを読み込むと全角で入力されていますので、
> 自動で半角に変更したいですが、
入力とは実際にはどんな状況でしょうか。
テキストボックス名を「txt1」と仮定します。
「txt1」に文字を入力していくと、1文字ごとに変更時イベントが発生しますが、
コピー&ペーストでは、貼り付けた文字列全部で1回の変更時イベントが発生します。
ここで、入力された・・・・この表現ですが、
入力したものが表示されているだけで、Enterキーとか押下していない状態の事でしょうか。
入力して、Enterキー(他の操作もありますが)で確定することで、
更新前処理 / 更新後処理イベントが発生します。
どの状態の時に半角にしたいのか・・・これによって、使用できるイベントが異なってきます。
★ 確定する操作をした後で良い場合
更新前処理 / 更新後処理イベントで処理を分けます。
更新前処理 では、入力値をチェックし、対象外があったら Cancel = True を返し再入力させます。
更新後処理 では、全角→半角変換を行います。
記述例)入力値は数字だけと仮定し、チェックする場合
Private Sub txt1_BeforeUpdate(Cancel As Integer)
Cancel = Me.txt1.Text Like "*[!0-9]*"
End Sub
Private Sub txt1_AfterUpdate()
Me.txt1 = StrConv(Me.txt1, vbNarrow)
End Sub
★ 確定操作をしなくても半角に
使えるイベントは、変更時しかありません。
変更時では、入力文字は Me.txt1.Text で参照します。
ただ、Me.txt1.Text に全角→半角に変更した文字を設定すると、
再度、変更時が呼ばれ・・・さらに、更新前処理 / 更新後処理イベントまで発生します。
値を設定したことにより、また同じ処理を行わないようにフラグで対処してみます。
(フラグ以外の方法もありますが、今回は割愛します)
ここでも上記同様に、入力値は数字だけと仮定し、チェックする場合
Private Sub txt1_Change()
Static bNop As Boolean
If (Not bNop) Then
bNop = True
If (Me.txt1.Text Like "*[!0-9]*") Then
Me.txt1.Text = "" ' ▲ 対象外があったら入力文字を全部消す
Else
Me.txt1.Text = StrConv(Me.txt1.Text, vbNarrow) ' ▲ 全角→半角に変更
End If
End If
bNop = False
End Sub
※ 上記 ▲ を行うと、変更時 / 更新前処理 / 更新後処理 が連続して発生します。
※ 変更時の処理と、
更新前処理 / 更新後処理での処理は、どちらかを記述するものになります。
どちらが使えるのか・・・・云々は、実際にやってみてください。
(入力が、どの様な動きをするものなのか私には見えないので)
※ 雰囲気は動くと思いますが、不都合があれば修正してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- デスクトップパソコン 40年間の悩み キーボードにおいて初期値として漢字ローマ字変換に設定する方法 8 2023/05/08 14:50
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- マウス・キーボード 何故、ローマ字や英語を全角で打つ? 5 2022/05/15 09:36
- Access(アクセス) Access で半角スペースと全角スペースの区別について 3 2022/11/05 23:54
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Windows 10 IMEで『あ』という部分が出ない時がある 2 2023/01/04 17:39
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- iOS これは日本語入力の大発明ですか? 7 2022/12/21 07:17
このQ&Aを見た人はこんなQ&Aも見ています
-
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
Accessで日付や数値を全角で表示させることはできますか。
Access(アクセス)
-
Accessのコンボボックスでリストが選択できない
Word(ワード)
-
-
4
ラベルとテキストボックスのグループ化を解除したい
Access(アクセス)
-
5
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
6
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
7
アクセスVBAのMe!と[ ]
Access(アクセス)
-
8
access フォーム上で複数行のレコードを追加したい。
Access(アクセス)
-
9
Access2013 レポートを印刷するために開いた、レポートビューをVBAで閉じる方法を教えて。
その他(Microsoft Office)
-
10
アクセスのフォームに入力する文字に制限をかけたい
Access(アクセス)
-
11
Accessレポートのチェックボックスを大きくする方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
銀行の窓口処理の件で知ってる...
-
エクセルで、日付を入力すると...
-
EXCEL VBA マクロ 実行する度に...
-
switch の範囲指定
-
UMLでの例外処理
-
インタラクティブの反対語は?
-
【Excel】特定の文字を含むセル...
-
お家デートをしててハグを長い...
-
VBの質問#if 0 then ってどう...
-
月度は何て読みますか?
-
VBAでループ内で使う変数名を可...
-
findは動くがfindnextがマクロ...
-
ボタンクリックイベント 重複...
-
VBAでCOPYを繰り返すと、処理が...
-
生活保護受給者は性欲をどんな...
-
C言語 b += a ? 1 : 0; の意味
-
リョウ・・・量?料?
-
JDBCでの大量データ検索でResul...
-
vba 空のデータをSplitする時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
DoEventsがやはり分からない
-
月度は何て読みますか?
-
お家デートをしててハグを長い...
-
VB.NET Excelを読み込んでDataT...
-
VBの質問#if 0 then ってどう...
-
Do~Loopした回数をカウントしたい
-
VBAでCOPYを繰り返すと、処理が...
-
メルカリのメルカードで買い物...
-
インタラクティブの反対語は?
-
Loadイベント中にほかのイベン...
-
リョウ・・・量?料?
-
vba 空のデータをSplitする時の...
-
findは動くがfindnextがマクロ...
おすすめ情報