エンターキーを押してもマクロが実行されない場合の対処法

このQ&Aのポイント
  • E3:N3セルに値を入力し、エンターキーを押すことでマクロを実行しています。ただし、セルが空白のままエンターキーを押すとエラーが発生してしまいます。
  • フィルタオプションの設定をするため、セルが空白の場合はマクロを実行しないようにしたいです。
  • Worksheet_Changeイベントを使用して、セルの値が変更された場合にマクロを実行するようにします。セルがE3:N3の範囲外の場合は処理を中止します。また、セルの値が空白の場合はマクロを実行しないようにします。
回答を見る
  • ベストアンサー

E3:N3セルに値を入力後、エンターキーを押すことで、マクロを実行して

E3:N3セルに値を入力後、エンターキーを押すことで、マクロを実行しております。 しかし、セルが空白のままエンターキーを押してしまうと、エラーとなってしまいます。 (フィルタオプションの設定で値を抽出するマクロのため、空白だとエラーになってしまいます。) できれば、セルが空白のとき、エンターキーを押しても、マクロを実行しないようにしたいです。 言葉足らずで恐縮ですが、何卒よろしくお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("E3:N3")) Is Nothing Then Exit Sub Else Application.OnKey Key:="{ENTER}", Procedure:="Macro7" End If On Error Resume Next ActiveSheet.ShowAllData End Sub

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

一つでも空白があれば終了? Private Sub Worksheet_Change(ByVal Target As Range)の直後に↓でどうでしょう。 If Application.WorksheetFunction.CountBlank(Range("E3:N3")) <> 0 Then Exit Sub 「全て空白の時終了」にしたいなら、式を「<>0」→「=10」にしてください。

a26vNvvub
質問者

お礼

うわあああああ 出来ました。 本当にありがとうございました。

関連するQ&A

  • E3:N3セルに値を入力後、エンターキーを押すことで、マクロを実行して

    E3:N3セルに値を入力後、エンターキーを押すことで、マクロを実行して E3:N3セルに値を入力後、エンターキーを押すことで、マクロを実行しております。 しかし、セルが空白のままエンターキーを押してしまうと、エラーとなってしまいます。 (フィルタオプションの設定で値を抽出するマクロのため、空白だとエラーになってしまいます。) できれば、セルが空白のとき、エンターキーを押しても、マクロを実行しないようにしたいです。 言葉足らずで恐縮ですが、何卒よろしくお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("E3:N3")) Is Nothing Then Exit Sub Else Application.OnKey Key:="{ENTER}", Procedure:="Macro7" End If On Error Resume Next ActiveSheet.ShowAllData End Sub

  • Excelでセルの値を変化させた時にマクロを実行するには?

    "A1"のセルに値を入れるとマクロが実行するように組んだのですが、問題が発生しました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("A1") Then      cells(1,2)=5      ・・・・ End If End Sub ここでA1に"5"を入力すると、B1に5と入力されるのですが、Target=5と認識してしまい、A1と同じ値になるので無限ループになってしまいます。 なにか回避策はないでしょうか? よろしくお願いします。

  • エクセルでセルに文字が入力されたらマクロを実行

    前回どなたかが質問されて回答を見せてもらったら私のやりたいことと同じだったので実行してみましたが出来なかったのでもう一度質問をさせてください。 1.実行したのですが、なにも実行されません。 2.実行したらメッセジBOXだけは実行するのですが、後のコマンドが実行されずにエラーになります。 もう一度詳しく教えてください。 マクロ初心者ですよろしくお願いします。 1.【シートモジュールで条件判定し、マクロを起動する】 通常はこちらの方法が使われます。 Private Sub Worksheet_Change(ByVal Target As Range)   '変化のあったセルがA1セルか?   If Target.Address = "$A$1" Then      '条件判定:A1セルの値は 1 か?     If Target.Value = 1 Then       MsgBox "A1セルは条件を満たしました"     End If   End If End Sub 2.【ワークシート上で条件判定し、マクロを起動する】 処理内容にもよっては不向きな場合もありますが、こんな方法も あります。 マクロを Sub ではなく、Function 、、つまり関数にしてしまいます。 Function TestMacro() '<-- Sub を Function に替える   MsgBox "A1セルは条件を満たしました"   TestMacro = "" '戻り値はなし End Function そして、ワークシートの B1 セルに次の式を入力します。()は必須 です。  =IF(A1=1,TestMacro(),"")

  • 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 ではカーソルキー「↓」で"時間変換"マクロは実行されます。 何がいけないのでしょうか? どうか分かる方、アドバイスをお願い致します。

  • EXCELでセルの値が変化したときだけにマクロ実行

    教えてください。 EXCELのA1セルの値が1→0に変化したときにMacro1を実行、0→1に変化したときにMacro2を実行したいと思い、以下のマクロを「シート名タブ右クリック」→「コードの表示」で開く画面に打ちました。 そうしたところキーボードからA1セルに1や0を打ち込むとMacro1・Macro2を実行するのですが。A1セルに関数式を入れ自動で1→0・0→1に変化してもMacro1・Macro2が実行されません。この場合どう修正すればMacroが実行されるようになりますか? ※ちなみにA1セルの関数式はある条件を満たしたら1、そうでない時0という式です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" And Target.Value = 0 Then Macro1 End If If Target.Address = "$A$1" And Target.Value = 1 Then Macro2 End If End Sub

  • セルの値をファイル名にするには

    現在下記のマクロを入力しています。 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If End Sub この時 ファイル名を SHEET1のA1 セルの値を利用してファイル名にするために下記の内容を入れてブックを保存したいと考えています。 上記のマクロが入っていないときは上手く行くのですが下記を追加するにはどうすればいいかご指導いただけませんでしょうか。 宜しく御願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub

  • エクセルマクロ(VBA)で指定したセルが変化したときに実行するには?

    VBAでsheetの中のworksheet_changeなどでマクロを書くと、そのシー トの中のどのセルを変化させてもマクロが実行されるのですが、これ を、A1とc1とc2が変化したときだけ処理を実行させたいのです。 以下のマクロのどこかを編集すると、そのようなことが出来るのでし ょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) ----実行する内容---- End Sub Private Sub Worksheet_Change(ByVal Target As Range) ----実行する内容---- End Sub

  • ExcelVBA 二つのセルに入力された時の判定

    セルA1とA2両方に値が入力された時、セルA3に文字を入力するマクロを作りたいです。 下記プログラムで試しているのですが、ステップインで見ると最初のIFでTrue判定されてしまいます。 どうすればこの条件を満たすマクロになるのか、教えて頂けないでしょうか。 以上、宜しくお願い致します。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Or Intersect(Target, Range("A2")) Is Nothing Then Exit Sub Else If Range("A1").Value <> "" And Range("A2").Value <> "" Then Range("A3").Value = "入力済み" End If End If End Sub

  • エクセルの特定のセルの値が変化したらマクロを自動実行させたい。

    エクセルの特定のセルの値が変化したらマクロを自動実行させたい。 エクセルにてシート1のB5に英数字を入力すると シート2のA列を検索し同じ値があるとその行のB列にある値をH6に表示をします。  【例】   シート1のB5に「A5684」と入力   シート2     A   B   1:A5682 パイン    2:A5683 リンゴ   3:A5684 バナナ   シート1のH6に「バナナ」と表示される シート2のA列にない場合はメッセージボックスで「データがありません」と表示します。 またシート3のA1に数字を入れておき、以下のマクロ、  'Sheet3から印刷すべき連番を獲得します。 Worksheets("Sheet3").Select Range("A1").Select 番号 = ActiveCell 連番 = "A" & Application.WorksheetFunction.Rept("0", 5 - Len(番号)) & 番号  'Sheet3の番号セル「B1」を更新します 番号 = 番号 + 1 ActiveCell.FormulaR1C1 = 番号  'Sheet1のセル「H7」欄に連番を表示します。 Worksheets("シート3").Select Range("B1").Select ActiveCell.FormulaR1C1 = 連番 Worksheets("シート1").Select Range("H6").Select '調べたいセルを記入 If IsError(ActiveCell.Value) Then errval = ActiveCell.Value Select Case errval Case CVErr(xlErrDiv0) MsgBox "#DIV/0! エラー" Case CVErr(xlErrNA) If vbOK = MsgBox(" データがありません") Then Exit Sub End Select End If Sheets("シート1").PrintOut Copies:=1 Range("B5").Select Selection.ClearContents '消去 Range("B5").Select End Sub でシート1のH7に(=シート3!B1)として 印刷ごとに1、2、3、と連番を入れています。 フォームで作成したボタンを押すとH6とH7の値が印刷されます。 そしてB5の値がDeleteされ(よってH6は#N/Aとなる) B5にカーソルが行って入力待ち状態になるようにしてあります。 これで、シート1のB5の値が変化又はH6が変化したら 印刷ボタンを押して印刷ではなく自動印刷されるように出来ますか? Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = B And Target.Row = 5 Then を使いましたが 「コンパイルエラー」とか Targetの所が色つきになって「End Sub」が必要です。 となってうまく出来ません。 お願いします。

  • オープンオフィス エンターキーでマクロ実行するには

    タイトル通り、OpenOffice Calcでエンターキーだけでマクロを実行する方法を教えて下さい。 Excelでは、onkeyメソッドを使い以下のようにできましたが、OpenOffice CalcではVBASupport 1などを使用してもエラーが出てしまいました。 どのような方法でも良いので、何か方法をご存知でしたらよろしくお願いします。 Application.OnKey "{enter}", "macro1" Application.OnKey "~", "macro1"

専門家に質問してみよう