![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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(アクセス)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
-
4
ラベルとテキストボックスのグループ化を解除したい
Access(アクセス)
-
5
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
6
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
7
Access サブフォームでの選択行の取得
その他(データベース)
-
8
エクセルからアクセスにインポートすると、エラーが出てしまいます。原因を教えていただけませんか。
Access(アクセス)
-
9
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
10
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
11
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
12
2つ目のレコードの値を取得するには?
Access(アクセス)
-
13
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
14
アクセスVBAのMe!と[ ]
Access(アクセス)
-
15
アクセスで『0の値以外』を表示する方法
Access(アクセス)
-
16
Accessのレポートの文字にカッコを追加したい。
Access(アクセス)
-
17
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
18
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
19
ADOで現在のレコードの次のレコードの値も取得
Access(アクセス)
-
20
アクセスのフォームに入力する文字に制限をかけたい
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
DoEventsがやはり分からない
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
FFTの結果ついて
-
VBAでセルに値が入力されるまで...
-
VB.NET Excelを読み込んでDataT...
-
メルカリのメルカードで買い物...
-
インタラクティブの反対語は?
-
Loadイベント中にほかのイベン...
-
Do~Loopした回数をカウントしたい
-
マクロで、質問です。 Find関数...
-
セルの値が0はクリアするマクロ
-
UMLでの例外処理
-
一定の時間が経過したら、処理...
-
再帰処理を途中で抜けるには
-
VBの質問#if 0 then ってどう...
-
フォーム上のすべてのTextBoxを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
EXCEL VBA マクロ 実行する度に...
-
VBの質問#if 0 then ってどう...
-
Do~Loopした回数をカウントしたい
-
もしかして
-
UMLでの例外処理
-
findは動くがfindnextがマクロ...
-
インタラクティブの反対語は?
-
VBA SaveChanges 上書きされない
-
リョウ・・・量?料?
-
Loadイベント中にほかのイベン...
-
セルの値が0はクリアするマクロ
-
FFTの結果ついて
-
Select Case文でこのようなこと...
おすすめ情報