VBAでApplication.onKeyがエラーになる場合の対処方法
- 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 正確には、ショートカットを無効にするタイミングはブック自体を 開いてから後でも構わないのですが、やはり同じようにエラーが 出ます。 どうしてエラーになるのか、どうすれば正常に動作するのか 教えてください。 以上、宜しくお願い致します。
- tatapata
- お礼率37% (61/162)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
保存禁止にしたければワークシートのBeforeSaveイベントで Cancel=True にするだけで簡単に出来ますが、それではダメですか。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Cancel = True End Sub
その他の回答 (1)
- hotosys
- ベストアンサー率67% (97/143)
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 としているのですが、起動時に開くシートにしか適用されません。 ページが増えていくのでブック内の全シートに適用するにはどうしたらいいでしょうか?
- 締切済み
- その他MS Office製品
- エクセル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はどの様に改造すれば良いでしょうか?
- ベストアンサー
- Excel(エクセル)
- 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(エクセル)
- 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 '----------------------------------------- 以上です。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
yama1718さん、ありがとうございます! エラーの問題は解決しませんが、教えていただいた方法で うまくいきそうです。 今後とも、何かありましたら宜しくお願い致します。