
No.2ベストアンサー
- 回答日時:
#1です
> 文字を入れ替え、その入れ替えた文字を再度テキストボックスに入力したい
ここでの「再度」を理解できていないのですが。
どのような記述になっているのでしょうか。
テキストボックス「txt1」に、"(1)" の入力で "第一章" に置き換えるものとした場合、
Private Sub txt1_Change()
If (Me.txt1.Text = "(1)") Then
Me.txt1.Text = "第一章"
End If
End Sub
の様な記述になっていると、
Me.txt1.Text = "第一章"
によって、Change イベントが発生します。
Me.txt1.Value = "第一章"
または、
Me.txt1 = "第一章"
とすることで、イベントを発生させずに値を代入することができます。
ただ、これをすると、更新前処理、更新後処理も発生しないことになります。
更新前処理、更新後処理も発生させつつ、2度処理しないようにする時には、
(a) フラグ制御する
Dim bFound As Boolean
Private Sub txt1_Change()
If (Not bFound) Then
If (Me.txt1.Text = "(1)") Then
bFound = True
Me.txt1.Text = "第一章"
End If
End If
bFound = False
End Sub
フラグが立っていない時だけ、判別/処理する。
Me.txt1.Text = "第一章" をした時点で、変更時/更新前処理/更新後処理まで動き切ります。
(b) 変更時処理を一旦無しにする
Private Sub txt1_Change()
Dim sTmp As String
If (Me.txt1.Text = "(1)") Then
sTmp = Me.txt1.OnChange
Me.txt1.OnChange = ""
Me.txt1.Text = "第一章"
Me.txt1.OnChange = sTmp
End If
End Sub
Me.txt1.Text = "第一章"
する前に、変更時イベントを受け取らないようにします。
Me.txt1.OnChange に "[Event Procedure]" や "[イベント プロシージャ]" が設定されていると、
Private Sub txt1_Change() が呼び出されます。
Me.txt1.Text = "第一章" をした時点で、更新前処理/更新後処理まで動き切ります。
動き切った時には、他へコントロールが移動しても再度イベントが発生することはありません。
Me.txt1.Text に値を代入しなかった場合は、
他のコントロールに移動した時点で、更新前処理、更新後処理が動きます(変更していたら)
Me.txt1.Text への設定は、txt1へフォーカスがある時だけ有効です。
他の処理をしつつ、txt1へ代入&変更時/更新前処理/更新後処理を動かしたい時には、
例えば、ボタンがクリックされた時に
Me.txt1.SetFocus
Me.txt1.Text = "第二章"
と記述します。
2007での動きを記述してみましたが、この内容が得たかったものなのかは??
また、他にも方法があるのかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
-
4
VBAから変更した時だけイベントを発生させない方法
Excel(エクセル)
-
5
Access サブフォームでの選択行の取得
その他(データベース)
-
6
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
7
スクロールバーをVBAで操作したい
Access(アクセス)
-
8
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
9
ACCESSのフォームで次のレコードに移動しない方法を教えてください
その他(データベース)
-
10
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
11
falseとtrue 0,1,-1 の意味が知りたいです
PowerPoint(パワーポイント)
-
12
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
13
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
14
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
15
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
16
Accessの更新後処理で特定の条件を満たしている場合、フォーカスを移動させない方法
PowerPoint(パワーポイント)
-
17
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
18
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
19
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
20
アクセスVBAのMe!と[ ]
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
object browser で処理を中断す...
-
他の処理でselectさせないよう...
-
RDBのテーブル種類の違い
-
DELETE文でFROM句を省略した場合
-
処理速度について(UPDATE)
-
データを削除しても表領域の使...
-
SQL*Loaderで、データを加工し...
-
ORA-00959: 表領域'****'は...
-
お知恵をお貸しください。
-
CLOB型へのINSERT
-
datapumpの実行方法について
-
Data Pump で大量データインポ...
-
SQLでスキーマ名(所有者名)の...
-
USER_SEGMENTの参照について
-
Access レコードを追加できませ...
-
oracleのimpdpでORA-39166
-
特定のスキーマのテーブルを一...
-
Viewにインデックスは張れ...
-
カラムの存在チェック
-
ACCESS 複数テーブル・複数フィ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DELETE文でFROM句を省略した場合
-
object browser で処理を中断す...
-
他の処理でselectさせないよう...
-
RDBのテーブル種類の違い
-
同じSELECT文同士でのデ...
-
年度毎にシーケンスの初期化?
-
ActiveX DLLでのオラクルのトラ...
-
DBリンクエラーについて
-
accessでイベントを中止するよ...
-
統計情報の取得=コミットですか?
-
同一レコード更新時の排他制御
-
C#でトランザクション開始後参...
-
Truncate以外で高速にテーブル...
-
PL/SQLの平行処理について
-
チューニング対象のSQLの見つけ...
-
LOCK TABLE
-
トランザクションのデータ件数...
-
Access2013で操作ログを残した...
-
DMLロック解除待ち時間の指定は...
-
Oracleの欠点
おすすめ情報