Note: The other languages of the website are Google-translated. Back to English

Excelで特定のセルをクリックしてマクロをトリガーまたは実行するにはどうすればよいですか?

Microsoft Excelを使用しているときに、コマンドボタンを使用して特定のマクロを実行する方法を知っている場合があります。 しかし、ワークシートの特定のセルをクリックするだけでマクロを実行する方法を知っていますか? この記事では、特定のセルをクリックしてマクロをトリガーする方法について詳しく説明します。

VBAコードで特定のセルをクリックして、マクロをトリガーまたは実行します


VBAコードで特定のセルをクリックして、マクロをトリガーまたは実行します

次のVBAコードは、Excelの特定のセルをクリックしてマクロを実行するのに役立ちます。 次のようにしてください。

1.マクロを実行するためにクリックする必要のあるセルを含むワークシートで、[シート]タブを右クリックし、[ コードを表示 コンテキストメニューから選択します。

2。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウで、以下のVBAスクリプトをコピーしてコードウィンドウに貼り付けます。

VBAコード:特定のセルをクリックしてマクロをトリガーまたは実行します

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D4")) Is Nothing Then
            Call MyMacro
        End If
    End If
End Sub

免責事項:

1.コードでは、D4はマクロを実行するためにクリックするセルです。

2.コードネームを置き換えてください マイマクロ マクロを使用すると、ワークシートで実行されます。 スクリーンショットを参照してください:

3。 プレス 他の + Q キーを同時に閉じて アプリケーション向け Microsoft Visual Basic 窓。

これ以降、現在のワークシートのセルD4をクリックすると、指定したマクロがすぐにトリガーされます。


関連記事:


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (37)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
VBAコードを含む特定のセルをクリックしてマクロをトリガーまたは実行すると、これを機能させることができませんでした。 私はそれを多くの異なる方法で試しましたが、約束されたものを達成することはできませんでした。
このコメントは、サイトのモデレーターによって最小化されました
このコードは、「ThisWorkbook」モジュールに配置した場合にのみ機能します。 一般的なモジュールでは動作しません。
ワークブック名​​>MicrosftExcelオブジェクト>ThisWorkbook。
このコメントは、サイトのモデレーターによって最小化されました
このコードは、ワークシートコードモジュールで機能します。 シートタブを右クリックして、[コードの表示]をクリックする必要があります。 これにより、そのワークシートのコードモジュールのみが開きます。 次に、前述のコードを貼り付けます。
このコメントは、サイトのモデレーターによって最小化されました
複数のマクロが必要な場合、同じページで異なるマクロを実行しているセル-それは可能ですか?
このコメントは、サイトのモデレーターによって最小化されました
親愛なるサイモン、
以下のVBAスクリプトは、同じページのセルをクリックして、さまざまなマクロを実行するのに役立ちます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Count=1の場合Then
Intersect(Target、Range( "D4"))が何もない場合は、MyMacro1を呼び出します
Intersect(Target、Range( "D8"))が何もない場合は、MyMacro2を呼び出します
Intersect(Target、Range( "D10"))が何もない場合は、MyMacro3を呼び出します
終了する場合
End Subの

セルをクリックしてさらにマクロを実行するには、「If Not Intersect(Target、Range( "D10"))Is Nothing ThenCallMyMacro」という行を追加してください。 また、必要に応じて、コード内のセル名とマクロ名を変更します。
このコメントは、サイトのモデレーターによって最小化されました
Excelで動作していません。 コードは正しいですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちはカミラ、
ご不便おかけしてすみません。 以下のVBAコードを試してください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
バリアントとしての薄暗いxRgArr
バリアントとしての薄暗いxFunArr
Dim xFNum を整数として
文字列としての薄暗いxStr
範囲としての薄暗いxRg
xRgArr = Array( "A1"、 "D1"、 "C1")'マクロのトリガーに使用されるセル
xFunArr = Array( "Code name1"、 "Code name2"、 "Code name3")'対応するコード名
Selection.Count=1の場合
xFNum = 0の場合UBound(xRgArr)へ
xRg = ActiveSheet.Range(xRgArr(xFNum))を設定します
交差しない場合(Target、xRg)は何もありません
xStr = xFunArr(xFNum)
Application.Run xStr
終了する場合
次へ
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
これは完璧に機能し、時間を大幅に節約できます。知識を共有していただきありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
お役に立ててうれしいです。
このコメントは、サイトのモデレーターによって最小化されました
素晴らしい。 それはうまく機能しています...ありがとう....
このコメントは、サイトのモデレーターによって最小化されました
こんにちは。

これはうまく機能していますが、マクロの実行に条件を追加したいと思います。 クリックしたセルの横のセルに特定の値が含まれている場合にのみ、マクロを実行したいと思います。
たとえば、セルF6をクリックすると、セルE6に「x」が含まれている場合にマクロを実行したいのですが、セルE6が空白の場合、マクロを実行してはなりません。
希望は意味をなさない。
感謝

これが条件のない私の元のコードです:


Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Selection.Count=1の場合
交差しない場合(ターゲット、範囲( "F6:F18"))は何もありません
datePickに電話する
終了する場合
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
次のVBAコードは、問題の解決に役立ちます。 ぜひお試しいただき、コメントありがとうございます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
範囲としての薄暗いxRg
交差しない場合(ターゲット、範囲( "F6:F18"))は何もありません
xRg = ActiveSheet.Cells(Target.Row、Target.Column-1)を設定します
If(xRg.Value = "")Or(xRg.Value <> "X")Then Exit Sub
datepickに電話する
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
ありがとう、しかしマージされたセルはどうですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちはアルバー、
このコードは、結合されたセルでは機能しません。
このコメントは、サイトのモデレーターによって最小化されました
私はOpenOfficeを使用していて、シートタブを右クリックしてイベントを選択し、MyMacrosからこのマクロを選択しました。ただし、次の行でエラーが発生します。If Selection.Count = 1 Then >>> "Basic runtime error、変数が定義されていません...
このコメントは、サイトのモデレーターによって最小化されました
こんにちはジェームズ、
このコードは、MicrosoftOfficeExcelでのみ機能します。 コメントありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
このマクロの私の完全なコードは次のとおりです。


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim val As String
REM val = Range( "A2")。Value

Selection.Count=1の場合
交差しない場合(Target、Range( "D24"))は何もありません
REMはMyMacroに電話します
val = Range( "D24")。Value
Range( "B27")。Value = val
終了する場合
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
このトピックは非常に興味深く、興味がありますが、どこにあるのかわかりません。ありがたいことに、このトピックを作成してください。皆さんが私を助けてくれることを願っています。 http://run-3.online
このコメントは、サイトのモデレーターによって最小化されました
Excel 2002(XP):[ファイル]を選択して[Shift]キーを押してブックを開くと、そのシートのマクロが無効になります。問題は、[ツール]>[マクロ]>[マクロ...]を選択するとマクロを実行できることです。とにかく、どのように解決するのですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、ロジャー、
Excel 2002(XP)でコードをテストしていません。 新しいバージョンのMicrosoftOfficeを使用してみませんか? それはあなたの仕事にとってより簡単になります。
このコメントは、サイトのモデレーターによって最小化されました
2010年も同じ結果。
このコメントは、サイトのモデレーターによって最小化されました
新しいバージョンを使用するだけで、より簡単になります。
https://games.lol/racing/
このコメントは、サイトのモデレーターによって最小化されました
ありがとう、しかしいくつかのマクロを実行するためにクリックするためのいくつかのセルはどうですか。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
以下のVBAコードを試してください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
バリアントとしての薄暗いxRgArr
バリアントとしての薄暗いxFunArr
Dim xFNum を整数として
文字列としての薄暗いxStr
範囲としての薄暗いxRg
xRgArr = Array( "A1"、 "D1"、 "C1")'マクロのトリガーに使用されるセル
xFunArr = Array( "Code name1"、 "Code name2"、 "Code name3")'対応するコード名
Selection.Count=1の場合
xFNum = 0の場合UBound(xRgArr)へ
xRg = ActiveSheet.Range(xRgArr(xFNum))を設定します
交差しない場合(Target、xRg)は何もありません
xStr = xFunArr(xFNum)
Application.Run xStr
終了する場合
次へ
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
このコードをありがとう。 他のセルと結合されているセルをクリックして、これを機能させることはできますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちはM.Symonds、
この記事のコードはあなたに有利に働くことができます: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
コメントありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、私はこのコードを使用して貼り付けマクロを実行しようとしましたが、マクロを正しく貼り付ける方法を理解できないようです。

これが私のオリジナルのマルコです

サブペースト()
'
'マクロの貼り付け
'

'
Range( "B34")。選択
ActiveSheet.PasteSpecial Format:= "HTML"、Link:= False、DisplayAsIcon:= _
False、NoHTMLFormatting:= True
End Subの


どんな助けでも大歓迎です
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、おもしろいテーマをありがとうございます。 たとえば、Sheet4のD1をクリックして、Sheet2!F3のマクロの結果を確認したい場合はどうでしょうか。
このコメントは、サイトのモデレーターによって最小化されました
もう動作しません。
Worksheet_SelectionChangeはデフォルトでは存在しません。 つまり、これを使用してマクロをトリガーすることはできません。

使用できる埋め込みサブは、[ワークブック]ドロップダウンリストで参照されているため、...

実行できる最も近い方法は、Workbook_SheetBeforeDoubleClickを使用することだけです。 ただし、編集モードになります(まだ大したことではありません)。
このコメントは、サイトのモデレーターによって最小化されました
こんにちはCodeKiller.Worksheet_SelectionChangeはSheet(Code)エディターにのみ存在します。 [シート]タブを右クリックし、[コードの表示]をクリックして、シート(コード)エディターをアクティブにします。
このコメントは、サイトのモデレーターによって最小化されました
マクロはワークシートでのみ実行されることを強調することが重要です。
通常のVisualBasicEditorを使用している人は、現在のワークシート以外の場所にマクロを保存することになります。
これらのコードはいずれもその状況では機能しません。
このコードははるかに単純で、私にとっては非常にうまく機能します。 

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
交差しない場合(範囲( "d1")、ターゲット)は何もありません
aaに電話する
終了する場合
End Subの
Sub aa()'ここにコードを入れてください
Range( "D1")。Select
選択。コピー
Range( "F1")。Select
ActiveSheet.PasteEnd サブ
ジョン·ウェルズ
jnw.wells@gmail.com
このコメントは、サイトのモデレーターによって最小化されました
こんにちはジョンウェルズ、共有していただきありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
マージされたセルでこれを機能させたい場合、最も速くて汚い方法は、次のように2行目を更新することです。
オプション明示

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Selection.Count>0の場合Then
交差しない場合(Target、Range( "D4"))は何もありません
MyMacroに電話する
終了する場合
終了する場合
End SubSelection.Countは、残りのマクロを実行する前に選択が行われたかどうかを判別するために使用されています。 選択範囲がマージされた4つのセルで構成されている場合、Selection.Countは2に等しく、残りのコードは実行されません。XNUMX行目をマージされたセルの正確な数に変更することもできますが、これにより問題が発生します。追加のセルをマージします。
このコメントは、サイトのモデレーターによって最小化されました
グランディオーゾ! Grazie, era una vita che sognavo di poterlo fare, se può essere utile a qualcuno avendo necessità di eseguire più codici su più celle per
aumentare il numero di opzioni basta aggiungere le nuove istruzionisempre sotto la stessa option explicit altrimente ci viene detto che il riferimento al
ワークシート non è univoco. Mi spiego meglioouncemente su come ho adattato il codice con il mio esempio;

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Selection.Count=1の場合
If Not Intersect(Target, Range("Y64")) Is Nothing Then
範囲("Y65:Y78").選択
Range("Y65").Activate
Selection.ClearContents
範囲("Y65").選択
終了する場合
交差しない場合(Target、Range( "A33"))は何もありません
Range( "A33")。Select
選択。コピー
ActiveWindow.WindowState = xlMinimized
SendKeys "^v"
SendKeys "{BACKSPACE}"
終了する場合
終了する場合
End Subの

Grazie ancora è stata un'autentica meraviglia!

マッシモ
このコメントは、サイトのモデレーターによって最小化されました
そのタイトルについては何の期待もしていませんでしたが、もっと驚きました。 著者は素晴らしい仕事をしました。 私は事実を読んでチェックするのに数分を費やしました。 すべてが非常に明確で理解しやすいです。 私はあなたの知識のギャップを埋める投稿が好きです。 これは一種です。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、

encuentro la manera de hacer lo que necesito はありません。 Espero de veras que me podáis ayudar.
Necesito que se lance una MACRO al hacer clic en una celda, pero no sé en qué celda va a ser, no lo puedo comparar con (si se ha seleccionado la celda A3, por ejemplo, que se lance la acción) porque por funcionalidades del fichero, las celdas se van a mover de sitio (se han podido insertar, mas o menos filas encima). セイバー ケセルダ エス ラ ケ セ ハ セレクシオナードが必要です。
Hay alguna manera de poder hacer eso?
事前にどうもありがとうございました。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは。
セルアドレスは一定です。 移動できるのは、セルの値だけです。
VBA コードで指定したセルは、指定した VBA コードをトリガーするセルのままです。
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護