Excel VBA Auto_Openについての質問

このQ&Aのポイント
  • Excel VBA Auto_Openについて質問です。ENTERキーでセルを任意の場所に動かしたいと考えていますが、Auto_Openが止まらずエラーが発生します。
  • 質問者はAuto_Openが動いてしまっていると感じ、同じコードをWorkbook_open()に移しましたが、マクロが使用できない画面になってしまいます。
  • 質問者はENTERキーでセルを任意の場所に動かす方法やエラーの原因や対策についてアドバイスを求めています。
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>個人的にはAuto_Openが動いてしまっている感じがします。 エクセルを終了しない限りキー定義が有効になっているのです。 そして、マクロが書かれたブックを閉じてしまうと、実行するマクロが無くなってしまうためにエラーになるのです。 ですから、マクロをどこに書いても同様です。 Aブックを閉じても機能させたいなら個人用ブックとかアドインにすればエラーになりません。 Aブックを閉じると機能しないようにするなら、ブックを閉じる際にキー定義を元に戻せばエラーになることはありません。

関連するQ&A

  • excel2002vbaで選択しているセルがハイパーリンクとそれ以外のものを区別する方法

    ハイパーリンクをenterキーでリンク先に飛べるようにマクロを挿入したのですが、ハイパーリンク以外のセルでenterキーを押下した時に、「インデックスが有効範囲にありません」というエラーメッセジが表示されていまい通常のセル移動が行えません。 使用しているマクロは以前に掲載されていた以下のマクロをしようしています。 何かいい方法はあるでしょうか? Sub Auto_Open() '起動時 キー設定 On Call SettingKeys(True) End Sub Sub Auto_Close() '終了時 キー設定 Off Call SettingKeys(False) End Sub Sub SettingKeys(flg As Boolean) If flg Then Application.OnKey "{Enter}", "JumpHyperLink" Application.OnKey "~", "JumpHyperLink" Else Application.OnKey "{Enter}" Application.OnKey "~" End If End Sub Sub JumpHyperLink() If TypeName(Selection) = "Range" Then Selection.Hyperlinks(1).Follow NewWindow:=False End If End Sub

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

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

  • ExcelのVBAでWEBページを開くのが遅い

    よろしくお願いいたします。 現在社内システムのデータをExcelに落とすVBAを作っています。 単純に、 sub test () URL = "http://..." Dim xls As Workbook Set xls = Application.Workbooks.Open(URL) end sub のようなものを作成して実行したのですが、 Set xls = Application.Workbooks.Open(URL) の所で50~60秒ほど時間がかかってしまいます。 もう少し早くする方法はないのでしょうか?

  • 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 '----------------------------------------- 以上です。よろしくお願いします。

  • 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 フォーム上で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です。 よろしくお願いいたします。

  • 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させたいのですが どうしたらいいのでしょうか? 時刻は常に作動させておきたいです。 よろしくお願いします。

  • 複数のブックを開いているとエラーが出てしまいます

    エクセルのマクロ初心者でたいへん恐縮です。質問の仕方が悪ければお詫び申し上げます。  エクセルでそれぞれ違うマクロが記録された二つのブックを開いて、シートの表から抽出などの操作をしています。例えば、(1).xlsと (2).xlsにはそれぞれ部品表のようなリストを含めて3つのシートがあります。その二つのブックを頻繁にアクティブに切り替えながら作業をしようとしているのですが、片方を使っていると別のブックを使った時に「インデックスが有効範囲にありません」というエラーが出て、アクティブブックとは違うシートを読み込んでしまっているようです。 ちなみにブックを一つだけ開いて操作している時は全くエラーはでません。二つのブックを扱っている時だけです。マクロはエンターを押すと実行されるようになっており、一方を実行するともう片方のブックでエラーが出てしまいます。 その二つのブックのコードでエラー(黄色く表示)になるのは以下の★~★の部分です。 ------------------------------------------------------------------------------------ <(1).xlsのマクロ> Sub Auto_Open() ' Auto_Open Macro ActiveSheet.Unprotect ' ★Sheets("パッキンリスト").Columns("B:N").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("B2:B3"), CopyToRange:=Range("検索出力表!Extract"), Unique _ :=False★ ActiveWindow.SmallScroll Down:=-28 Range("C19:N19").Select Selection.Copy Range("D3:E14").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=True ActiveWindow.SmallScroll Down:=4 Rows("21:21").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp ActiveWindow.ScrollRow = 1 Range("B3").Select Application.OnKey Key:="{RETURN}", Procedure:="Auto_Open" Application.OnKey Key:="{ENTER}", Procedure:="Auto_Open" ActiveSheet.Protect UserInterfaceOnly:=True End Sub ----------------------------------------------------------------------------------- <(2).xlsのマクロ> Sub Auto_Open() ' Auto_Open Macro ActiveSheet.Unprotect If Range("B3").Cells = "" Then MsgBox "  ☆ パーツNo,が未入力です。" ActiveSheet.Protect UserInterfaceOnly:=True Exit Sub End If ★Sheets("パーツリスト").Columns("C:G").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("B2:B3"), CopyToRange:=Range("B20:E20"), Unique:= _ True★ Range("C21:E21").Copy Range("D3:E5").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=True ActiveWindow.ScrollRow = 1 Application.OnKey Key:="{RETURN}", Procedure:="Auto_Open" Application.OnKey Key:="{ENTER}", Procedure:="Auto_Open" ActiveSheet.Protect UserInterfaceOnly:=True End Sub ------------------------------------------------------------------------------------  二つのブックを開いて、下のタスクバーでブックを切り替えて操作してもお互いが干渉せずそれぞれのブックのプログラムがエラー無く動くようにしたいのですが、 もし、何か解決法などございましたらご教授いただければ幸いです。 何卒よろしくお願い申し上げます。

  • excel vba

    excel VBA (質問1) B7 セルに,DOC20071201_1231.xlsとはいっているとき下記の動作と同様のことをB7を使って表現するにはどうすればいいか。 Sub bookwo_open() Workbooks.Open Filename:="C:\Documents and Settings\taktta\My Documents\Log zzz\2007 log\2007年報告\2007年12月分\" & "DOC20071201_1231.xls" End Sub (質問2) A1セルに7とはいっているとき、B7セルに入っているファイルをオープンするには、どうすればいいか。 (A1セルにnとはいっているとき、Bnセルに入っているファイルをオープンするには、どうすればいいか。)

  • Shiftキーを押しもAuto_Openが動く

    パソコンの交換のためOSがWin2000からWinXPに変わりました。 エクセルのバージョンは変わらず2000です。 旧PCの「PERSONAL.xls」を新PCの「XLSTART」フォルダに移しました。 Sub Auto_Open() を含むモジュールがあります。 旧PCでは、Shiftキーを押しながらエクセルを起動させることで、 Sub Auto_Open() を回避してきました。 ところが新PCでは、無効にできず、処理が走ってしまいます。 セキュリティレベルが低、中、高、いずれの場合も変わりません。 ちなみにインストールしたのはパッケージ版のオフィスです。 新、旧、全く同じものでインストールしました。 原因はどこにあるのでしょうか・・・。

専門家に質問してみよう