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
No.8ベストアンサー
- 回答日時:
End If
にしてください。
ありがとうございます。
おかげさまでやりたいことができました。
しかし、実はもう少し入りこんでおりまして、
あるコマンドボタンを入力すると、セルに自動である文字が入り、検索をかけてくれる構成です。
直接、手入力でも、できるようにと、今回のご依頼をさせていただきました。
その結果、手入力した場合は、うまくいくのですが、
今度は、コマンドボタンを押して、セルに自動入力後、検索がうまくいきません。
型が一致しませんエラーがでてしまいます。
If Target.Value = "" Then
この文が引用されてます。
なぜなのでしょうか。
No.9
- 回答日時:
≪参考≫
特定のセル範囲が変更されたときに処理を実行する
http://www.moug.net/tech/exvba/0050131.htm
「Change」イベント・・・セルの内容が変更された時にプロシージャを実行する。
http://www9.plala.or.jp/siouxsie/date06.html
No.7
- 回答日時:
回答番号:No.6で提示したコードですが
よく見ると、If文でEndとするところがElseになっていました。
Endに直してください。
あるいは、1行で
If Intersect(Target, Range("E3:N3")) Is Nothing Then Exit Sub
としても良いと思います。
この回答への補足
ご指導ありがとうございます。
ifブロックに対応するend if がありません。
のエラーが出てしまいます。
いかがでしょうか。
No.6
- 回答日時:
回答番号:No.5の補足
Intersectで、Targetが、Range("E3:N3")内にあることを検出した後
Targetが、空白なら、Exit Subするようにします。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("E3:N3")) Is Nothing Then
Exit Sub
Else
IF Target.Value = "" Then Exit Sub
Call Macro7
On Error Resume Next
ActiveSheet.ShowAllData
End Sub
余談ですが
性急に、結果ばかりを求めず、コードの意味を理解されるようにした方が良いと思いますよ。
VBAのヘルプを活用してください。解りにくい部分もありますが、なかなか充実していると思います。
デバッグ等で、F8キーでコードを1行ずつ実行するのもコードの理解が容易になります。
あと、a26vNvvubさんが建てられたスレが乱立しています。
解決されたなら締め切り処理をよろしくお願いいたします。
No.5
- 回答日時:
If Application.WorksheetFunction.CountBlank(Range("E3:N3")) <> 0 Then Exit Sub
上記で、E3:N3範囲に、空白セルがひとつでも在ると、Exit Subしています。
回答番号:No.3で示したコードに変えて、試してみてください。
IF Target.Value = "" Then Exit Sub
No.4
- 回答日時:
下記でキー設定されたままになっています。
Application.OnKey Key:="{ENTER}", Procedure:="Macro7"
どこかで解除してやらなければなりません。
Application.OnKey Key:="{ENTER}", Procedure:=""
しかし、Changeイベントですから、データが変更Enterで確定されたなら動きます。
OnKeyを使うことはないと思います。
下記で試してみてください。
Call Macro7
この回答への補足
ありがとうございます。
エンターキーを解除して、下記を試みましたが、
こんどは、マクロが動いてくれません。
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.WorksheetFunction.CountBlank(Range("E3:N3")) <> 0 Then Exit Sub
If Intersect(Target, Range("E3:N3")) Is Nothing Then
Exit Sub
Else
Call Macro7
End If
On Error Resume Next
ActiveSheet.ShowAllData
End Sub
No.2
- 回答日時:
この回答への補足
前回はありがとうございました。
そのときはできたのですが、
なぜか、その後、突然できなくなりました。
下記のマクロです。
ちなみに、再生すると、マクロ名を聞かれますので、macro7を選択しております。
どうか今回もよろしくお願いします。
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.WorksheetFunction.CountBlank(Range("E3:N3")) <> 0 Then Exit Sub
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
No.1
- 回答日時:
COUNTAかループでチェックするしか思いつきませんでした。
(^^;'COUNTAで判断
If Application.WorksheetFunction.CountA(Range("E3:N3")) < 10 Then
Exit Sub
End If
'ループで判断
For Each c In Range("E3:N3")
If c.Value = vbNull Or c.Value = vbEmpty Then
Exit Sub
End If
Next
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Visual Basic(VBA) Excelのマクロについて教えてください。 3 2022/06/30 09:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/04 10:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
エクセルでCSVを編集するとき、...
-
Excel > ピボットテーブル「(空...
-
数式による空白を無視して最終...
-
【Excel】 csvの作成時、空白セ...
-
エクセルにて負の時間を0:00と...
-
「データ要素を線で結ぶ」がチ...
-
excel2010 空白セルにのみ貼り...
-
ピボットテーブルで空白セルの...
-
形式貼り付けの「空白を無視す...
-
エクセルで、「複数のセルの中...
-
Excel:関数が入っているセルに...
-
空白セル内の数式を残したまま...
-
SUMIFS関数で「計算式による空...
-
Excelで、入力文字の後に自動で...
-
vlookupの結果が0になるセルと...
-
エクセルで上の行の値を自動的...
-
vlookup にて、返す値が、空白...
-
エクセル マクロ 最終列まで...
-
エクセル 連番が途切れていると...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
数式による空白を無視して最終...
-
excel2010 空白セルにのみ貼り...
-
エクセルでCSVを編集するとき、...
-
「データ要素を線で結ぶ」がチ...
-
Excelで、入力文字の後に自動で...
-
ピボットテーブルで空白セルの...
-
エクセル 連番が途切れていると...
-
関数TRANSPOSEで空白セルを0に...
-
空白セル内の数式を残したまま...
-
Excel > ピボットテーブル「(空...
-
エクセルで、「複数のセルの中...
-
SUMIFS関数で「計算式による空...
-
空白を0とみなす関数
-
【Excel】 csvの作成時、空白セ...
-
エクセルで上の行の値を自動的...
-
《Excel2000》SUMPRODUCT関数で...
-
一列の中の金額を他のセルに
-
形式貼り付けの「空白を無視す...
-
エクセルで空白文字の前後を入...
おすすめ情報