VBAでApplication.onKeyがエラーになる場合の対処方法

このQ&Aのポイント
  • VBAのauto_openを使用してExcel起動時に特定のショートカットを無効化する方法について調査しています。しかし、実行するとエラーが発生してしまいます。正常に動作させるための対処方法を教えてください。
  • Excel起動時にauto_openを使用してショートカットを無効化するVBAのコードを記述しています。しかし、このコードを実行するとエラーが発生してしまいます。どうすれば正常に動作させることができるのか教えてください。
  • VBAのauto_openを使用してExcel起動時にショートカットを無効化する方法について調べています。しかし、実行時にエラーが出てしまいます。エラーの原因と、正常に動作させるための解決策を教えてください。
回答を見る
  • ベストアンサー

VBA auto_openでApplication.onKeyを実行できない

お世話になります。 表題のとおり、Excel起動時に、上書き保存や名前を付けて保存等の 機能をショートカットから実行できなくするように、auto_openで 処理をさせたいのですが、実行時にエラーが出てしまいます。 下記にそのソースを記述します。 Private Sub Auto_Open() Application.OnKey "F12", "" End Sub 正確には、ショートカットを無効にするタイミングはブック自体を 開いてから後でも構わないのですが、やはり同じようにエラーが 出ます。 どうしてエラーになるのか、どうすれば正常に動作するのか 教えてください。 以上、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.1

保存禁止にしたければワークシートのBeforeSaveイベントで Cancel=True にするだけで簡単に出来ますが、それではダメですか。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)     Cancel = True End Sub

tatapata
質問者

お礼

yama1718さん、ありがとうございます! エラーの問題は解決しませんが、教えていただいた方法で うまくいきそうです。 今後とも、何かありましたら宜しくお願い致します。

その他の回答 (1)

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

Application.OnKey "{F12}", ""

関連するQ&A

  • VBA  Auto_Openについて

    いつもお世話になってます。 Private Sub メイン() Load メイン メイン.Show End Sub Private Sub Auto_Open() Worksheets("sheets1").Range("A1").Value = Time Application.OnTime Now + TimeValue("0:00:01"), "Auto_Open" End Sub こんなかんじのを書きました。 上の「メイン」フォームもAuto_Openさせたいのですが どうしたらいいのでしょうか? 時刻は常に作動させておきたいです。 よろしくお願いします。

  • Sub Auto_Open() 実行されない

    Excel2003VBAについて教えてください。 あるBookから、VBAの”Workbooks.Open”で別のブックを開くように作ってあるのですが、開かれるBookのほうに”Sub Auto_Open()”で特定のシートをアクティブにするように作っています。 普通にBookを開くとSub Auto_Open()は実行されますが、”Workbooks.Open”では実行されません。 ”Workbooks.Open”で開いたときに、特定のシートがアクティブになればそれでよいのですが。 よろしくお願いします。

  • Excel VBA Auto_Openについて質問です。

    Excel VBA Auto_Openについて質問です。 A.xls Sub Auto_Open() Application.OnKey "{RETURN}", "ENTER_Key" Application.OnKey "{ENTER}", "ENTER_Key" End Sub でENTERキーでセルを任意の場所に動かしたいと考えています。 ENTER_Key()でうまく動かす事は出来たのですが、Auto_Openが止まらず、Excelを落とさずに、違うファイル(B.xls)を開いてA.xlsをクローズしてもB.xlsでENTERを押すと、エラー1004となってしまいます。 個人的にはAuto_Openが動いてしまっている感じがします。 エラーがでるので同コードをWorkbook_open()に移したのですが、今度は「マクロが使用できないか、無効になっている・・・」の画面になります。 原因や対策、またはENTERキーでセルを任意の場所に動かす方法等のアドバイスよろしくお願いします。 ちなみに、セル動きは1回目は1行下がり、2回目は右に4つ移動です。 このルーチンは出来ていると思います。 それではよろしくお願いいたします。 m(_ _)m

  • Auto_Openマクロ

    Excel2003のマクロで、 Sub Auto_Open() ActiveSheet.DisplayAutomaticPageBreaks = True End Sub としているのですが、起動時に開くシートにしか適用されません。 ページが増えていくのでブック内の全シートに適用するにはどうしたらいいでしょうか?

  • エクセルVBA フォーム上でOnkeyがうまく出来ない

    エクセルVBAでプログラムをしています。 Application.Onkeyでショートカットを指定したいのですがフォーム上ではうまく指定できません。 フォーム上での指定は不可能なんでしょうか? ショートカットを認識するケース 標準モジュールに Sub test2() MsgBox "test2" End Sub Sub Auto_Open() Application.OnKey "{b}", "test2" End Sub としてシート上で「b」を押した場合はうまくいきます。 ショートカットを認識しないケース 標準モジュールに Sub test() MsgBox "test" End Sub UserForm1フォームに Private Sub UserForm_Initialize() Application.OnKey "{a}", "test" End Sub としてフォームをロード(表示)して「a」を押しても何もおきません。 またフォームが表示されている状態で「b」を押しても何もおきません。 上記のコードはテストで作ったものなのでこれ以外はフォームを開く文以外何も書いておりませんので他との兼ね合いではないと思います。 どうすれば思ったとおりの動作になるのでしょうか? そもそもOnkeyはユーザフォームがアクティブのときは動かないのでしょうか? 動かない場合、フォームがアクティブなときのみフォームごとに違う関数を呼ぶショートカットを作る方法はありませんでしょうか? (コントロールごとにkey_downイベントで確認する方法はコントロールの数が各100個ほどあるのと、フォームが10個以上あるため出来ればやりたくありません。) 環境はwinXP、excel2003です。 よろしくお願いいたします。

  • Workbook_openでマクロが実行されない

    ExcelのVBAで起動時にマクロを実行させたいのですが、 「メソッドまたはデータメンバが見つかりません。」 とのエラーが出て実行出来なくて困っています。 プログラム内容は *ThisWorkbook* Private Sub Workbook_Open() Module1.tasu End Sub *標準モジュール(Module1)* Private Sub tasu() Dim a As Byte a = 3 Range("a1") = a End Sub 使用しているソフトはExcell2003、VB6.5です。 よろしくお願いします。

  • エクセルVBAの実行時エラー1004の解決方法

    Private tm As Double Sub Auto_Open() Call 更新 End Sub Sub 更新() Application.Calculate tm = [now()+timevalue("00:00:10")] Application.OnTime tm, "更新" End Sub '===================================================== Sub 更新やめ() Application.OnTime tm, "更新", , False End Sub この様なVBAがあります。 ここで「Sub 更新やめ()」のVBAを何度も実行すると「実行時エラー’1004’:’OnTimeメソッドは失敗しました;’_Application’オブジェクト」と表記されます。 何度も実行しても上記の表示が出ない様にする為のVBAはどの様に改造すれば良いでしょうか?

  • Excel2010でエンターキーにマクロ割り当て

    時間入力を何分何秒をシリアル値に変換するマクロを作って使用していますが、 エンターキーに割り当てが出来ないのでカーソルキーの「↓」を割り当てています。 本当は「1234」と入力してエンターキーを押せばマクロが実行されそのセルに 12:34というシリアル値を入力したいのです。 エンターキーへの割り当ての仕方を教えてください。 ブックが開かれたら実行されるマクロで Private Sub Workbook_Open() Application.OnKey Key:="{ENTER}", Procedure:="時間変換" End Sub ではエンターキーで"時間変換"マクロは実行されず Private Sub Workbook_Open() Application.OnKey Key:="{DOWN}", Procedure:="時間変換" End Sub ではカーソルキー「↓」で"時間変換"マクロは実行されます。 何がいけないのでしょうか? どうか分かる方、アドバイスをお願い致します。

  • VBAで実行時エラー 1004 がでる

    Excel2013です。以下のコードでエラーがでます。 どのシートがアクティブでもデータを閉じる時に特定のシート(sheet1)のA行の最終行の一つ下をアクティブにし上書き保存して閉じるようにしたいです。 以下記述したコードです。 Sub Auto_Close() Worksheets(1).Activate Range("A60000").End(xlUp).Offset(1).Select 'Aセル60000から最終行のセルの一つ下に下がる ActiveWorkbook.Save End Sub 閉じるときは問題ないのですが、開いたときにエラーがでます。 以下エラー文です。 実行時エラー 1004 'Worksheets'メソッドは失敗しました'_Global'オブジェクト どこを直せばいいのでしょうか? アドバイス願います。

  • Excel VBA ENTERで特定のセルへ移動

    他の質問でみつけたコードですが どなたか以下のコードの内容を説明(翻訳)していただけないでしょうか よろしくお願いします。 '<標準モジュール> Private Sub ReturnDirectrion2SelectCell()  If ActiveCell.Address(0, 0) Like "A2" Then   Range("B5").Select  Else   'Original ReturnDirection の再現   On Error Resume Next   Select Case Application.MoveAfterReturnDirection   Case xlDown     ActiveCell.Offset(1).Select   Case xlToRight     ActiveCell.Offset(, 1).Select   Case xlToLeft     ActiveCell.Offset(, -1).Select   Case xlUp     ActiveCell.Offset(-1).Select   End Select  End If End Sub Sub SetKeys()   '設定用   Application.OnKey "~", "ReturnDirectrion2SelectCell"   Application.OnKey "{Enter}", "ReturnDirectrion2SelectCell" End Sub Sub SetOffKeys()  '解除用  Application.OnKey "~"  Application.OnKey "{Enter}" End Sub '----------------------------------------- 自動設定が必要な場合は、以下のコードを加えてください。 '----------------------------------------- '<標準モジュール> Sub Auto_Open()  Call SetKeys End If Sub Auto_Close()  Call SetOffKeys End If '----------------------------------------- 以上です。よろしくお願いします。

専門家に質問してみよう