- ベストアンサー
エクセルVBA escキーのマクロ
初心者に毛が生えた状態です。エクセル2000を使っています。 ワークシートをWクリックするとユーザーフォームを表示するようにマクロの記述をしています。 ユーザーフォームをキャンセルボタン(×)で閉じるとシートのセルの中にカーソルが入った状態になります。 それをescキーを押した時のように、カーソルがセルの中に無い状態にしたいのです。 マクロの記録でescキーを押しても記録されないので、コードが分かりません。 ユーザーフォームの×ボタンを押したら、Wクリックする前の状態に戻すコードを教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
回答1、myRangeです。 >下のコードにしましたが、カーソルが入ったままになります ほんとうですか? 俄かには信じられないかったので、嫌々(笑)試してみました。 もちろん、上手くいきましたが。。。 ●質問の意図は下記のようなことですよね● お礼のコードは5行目のセルをダブルクリックしたらUserForm表示となっているので、 例えば、セルC5をダブルクリックしてUserFormを表示させ UserFormの×(閉じるボタン)でUserFormを消した後 セルC5にカーソルがピコピコしてるのでそれを消したい。 で、あればお礼のコードで上手くいきます。 ------------------------------------------------------- ■引数Cancelは、 正に質問のようなことをするためにあるものですから それが上手くいかないということであれば この引数Cancelは何の意味も持たないことになります。 何れにしろ、再度確認が必要でしょう。 以上です。
その他の回答 (2)
- ookami1969
- ベストアンサー率14% (137/953)
一番最後に「Enter」と入れれば「セルの中にカーソルが。。。」 というのは解決されませんか。 で その後 もとの場所に戻したいのであれば offsetで上に戻すとか。 そんなん いかがでしょうか。
お礼
単純なことですね!気がつきませんでした。 ありがとうございます。
- myRange
- ベストアンサー率71% (339/472)
BeforeDoubleClickの引数CancelをTrueにセットすればいいでしょう。 例えば、セルB3をダブルクリックしたら、UserForm1を表示する場合。 '------------------------------------------------------ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$B$3" Then Cancel = True '●これ UserForm1.Show End If End Sub '--------------------------------------------- セルを指定しないでUserFormを立ち上げると 通常のダブルクリックでのセル編集ができなくなりますので 上記のように、UserFormを立ち上げるためのセル、 または、セル範囲を決めておいた方がいいと思われます。 以上です。
補足
myRange様 回答ありがとうございます。 下のコードにしましたが、カーソルが入ったままになります。結果はNGです。 ユーザーフォームにはキャンセルボタンが無く、右上の×ボタンで消します。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ''入力したい部分をWクリックするとユーザーフォームを表示する(4行目以下) If Target.Row = 5 Then 行 = Target.Row '行番号を取得する 列 = Target.Column '列番号を取得する Cancel = True '●これ UserForm1.Show 'ユーザーフォームを表示する End If End Sub
お礼
申し訳ありません。できました。 記述していないシートで試していました。 ありがとうございました。