
ダブルクリックしたら全体を選択する方法をgooで調べていたら、
http://oshiete.goo.ne.jp/qa/4899232.html
に辿りつきました。
Private Sub txt00_DblClick(Cancel As Integer)
Me.txt00.SelStart = 0
Me.txt00.SelLength = Len(Me.txt00.Text)
Cancel = True
End Sub
で、やりたいことが行えたのですが、一つ疑問があります。
Cancel = True
はどういう意味なのでしょうか?
試しに、Cancel = Trueの部分をコメントアウトしてみたら、
テキストボックスが選択状態になりませんでした。
ということは、「Cancel = True」は、「実行!」みたいな意味なのでしょうか?
ご回答よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
#1です。
すみません、どうせ同じだろうとExcelのVBAのヘルプで調べていました。Access2010のヘルプには、>Cancel 必須 整数型 (Integer) DblClick イベントを発生させるかどうかを設定します。引数 Cancel を True (-1) に設定すると、DblClick イベントが取り消されます。
とあり、Excel VBAの記述と異なっておりました。
なお、DblClickで検索してみて下さい。候補のなかから、TextBox.DblClick イベントの所をご覧下さい。(但し、どのコントロールを選んでみても同じ記述かも)
既成の帳票フォームに置いた非連結のテキストボックスで試してみましたが、Excelのテキストボックスと若干挙動が違いますね。遅い2010のせいか、Cancel=Trueを入れないと、一瞬全選択されたものが、元に戻るのが見える気がします。
試したコードは下記の通りです。テキストボックスはつけてあった名前そのままです。
なおCancel = True は、どの位置に書いても効果は同じ様です。ご参考まで。
Private Sub タイトルtextbox_DblClick(Cancel As Integer)
Cancel = True
Me.タイトルtextbox.SelStart = 0
Me.タイトルtextbox.SelLength = Len(Me.タイトルtextbox.Text)
' Cancel = True
End Sub
No.2
- 回答日時:
テキストボックス「txt00」があるとします。
VBAで以下を記述します。
Private Sub txt00_DblClick(Cancel As Integer)
Cancel = MsgBox("続行?", vbYesNo) <> vbYes
End Sub
「はい」をクリックすると Cancel = False を
「いいえ」をクリックすると Cancel = True を設定して戻るだけです。
テキストボックスに「ABCD EFG.HIJ」と入力し、各文字の上でダブルクリックしてみます。
「はい」とすると、クリックした部分が反転表示されると思います。
「いいえ」なら反転する部分は、ないと思います。
Accessさんが反転処理するのは Cancel = False で戻った後だと推測できます。
ヘルプにもそれらしいことが書いてますね。
元々は、Cancel = False となっているようです。
今回、自分で反転範囲を指定したいので、(Accessさんに処理されては困るので)
Cancel = True として戻します。
以下の記述に変更して、同じように確認してみてください。
Private Sub txt00_DblClick(Cancel As Integer)
Me.txt00.SelStart = 0
Me.txt00.SelLength = Len(Me.txt00.Text)
Cancel = MsgBox("続行?", vbYesNo) <> vbYes
End Sub
「いいえ」なら全選択(全反転)
「はい」ならAccessさんが処理した反転になると思います。
なので
> 「Cancel = True」は、「実行!」みたいな意味なのでしょうか?
ではなく、「Accessさん、処理するな」とでも言った方が良いのでしょうか。
Accessさんの後の処理は Cancel しますよ( True )
なお、Private Sub txt00_DblClick(Cancel As Integer) の引数 Cancel に
ByVal 記述がないのは、
設定した値をAccessさんに見てもらいためだと思います。
余談)
※ テキストボックスの DblClick を、反転させたい処理ではなく、
・フォームを起動する等のためにイベントを使用したい場合、
Cancel = True は記述しておいた方が良いみたいです。
Accessのバージョンによっては、起動したフォームが裏に隠れるとかあるようです。
Cancel = True を指定することで回避できたという事もあるようです。
Accessさんの反転する時の処理が異なるのでしょうか??
私が理解していた範囲のものなので、自己責任にて検証/解釈してください。
Private Sub txt00_DblClick(Cancel As Integer)
Cancel = MsgBox("続行?", vbYesNo) <> vbYes
End Sub
---------------------------------------------------------
を実行して「はい」(Cancel = False)を押下みたところ
おっしゃる通り、選択部分が反転表示されました。
>今回、自分で反転範囲を指定したいので、
Accessさんに処理されては困るので
Cancel = True として戻します。
なるほど。なんとなくわかりました。
Cancel = True は
何かと役立ちそうですね。ありがとうございました。
No.1
- 回答日時:
以前からちょっと気になっていた表現だったので調べてみました(といってもVBAのヘルプですが)
>Cancel 必ず指定します。イベントのステータスを指定します。偽 (False) を指定すると、コントロールがイベントを処理します (既定値)。真 (True) を指定すると、アプリケーションがイベントを処理します。
ここで、アプリケーションというのはVBAのコードで制御しようとする事を言うのでしょうね。VBAのイベントコードを書かなくてもコントロールはWindowsのイベント処理をしている訳で、Cancel=Trueを指定すると、それをキャンセルするという事でしょうか。
当方の試験では、下記コードで何度かWクリックしていると、何かのタイミングで、テキストの全選択が働く事があります。この記述がなければその様な事は起こりません。したがって、VBAコードによる全選択を、コントロール本来のイベント処理が打ち消してしまうので、Cancel=Trueを指定して、それを防いでいると考えれば良いかも...
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
End Sub
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
End Sub
に変えて検証してみましたが
「イベント プロパティに指定した式 ダブルクリック時
でエラーが発生しました
ユーザ定義型は定義されていません」
となってしまいます。
ちなみに私もVBAのヘルプで調べたいのですが
どうやってしらべればいいでしょうか?
VBE画面でF1を押して「Cancel」と入れて押下すると
67件ヒットしてしまいました。
でもmitarashi様が提示していただいたヘルプの内容によると
False→コントロールがイベントを処理します (既定値)。
True→アプリケーションがイベントを処理します。
との事ですね。
ありがとうございました。大変参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 複数条件のオートフィルタ(VBA) 2 2022/12/09 15:40
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBAで Cancel=Trueの使い方
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
-
-
4
UserForm1.Showでエラーになります。
工学
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
8
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
9
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
10
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
11
Excel VBAでの右クリックのポップアップメニューの非表示方法は?
Visual Basic(VBA)
-
12
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
13
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
14
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
15
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
16
エクセルVBA テキストボックスへのセットフォーカスについて
Visual Basic(VBA)
-
17
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
18
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
19
Accessの更新後処理で特定の条件を満たしている場合、フォーカスを移動させない方法
PowerPoint(パワーポイント)
-
20
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別フォームから戻ったときのイ...
-
「Cancel = True」とはどういう...
-
フォームの値を取得できません...
-
Perlで数値(小数点、負の数、...
-
excelのタスクバーアイコンが・...
-
デジタル時計の時刻合わせの方...
-
エクセルのシート上に別のシー...
-
ウインドウを毎回同じ位置、大...
-
Excelでワードアートや図を常に...
-
エクセルでポップアップを出し...
-
スクリプトって、何ですか?ど...
-
エクセルVBAでフォームのListbo...
-
Javascript_submit()完了後に処...
-
Outlookでこのような表示がされ...
-
PDFを(htmlのように)無限に縦...
-
Visual Basicから Spreadのスク...
-
[Java] Edgeでのアドレスバー非...
-
VBの画面で、全ウィンドウを一...
-
サブウィンドウを常に最前面に...
-
アコーディオンで開かれたパネ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「Cancel = True」とはどういう...
-
別フォームから戻ったときのイ...
-
VB2005 DataGridView上でクリッ...
-
VB6.0のEnabledをfalseにしても...
-
C++での連続した左クリックの禁...
-
excelのタスクバーアイコンが・...
-
エクセル アプリケーションの...
-
【C#】ラベルのダブルクリック...
-
ASP DB検索結果の件数を事前表示
-
ヤフートップページの中心にあ...
-
別ページからのタブ切り替えの...
-
処理終了後のに砂時計が、クリ...
-
Perlで数値(小数点、負の数、...
-
VBAでIEの「Web ページからのメ...
-
Perlの多重起動を禁止したい
-
Perlでページ処理がどうしても...
-
MSFlexGrid
-
時間のかかる処理中にメッセー...
-
VC++2010 エディットボックスに...
-
C# マウスオーバーの記述方法
おすすめ情報