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

Excelでセル値が変更されたときにマクロを実行するにはどうすればよいですか?

通常、Excelでは、F5キーまたは実行ボタンを押してVBAコードを実行できます。 しかし、セルの値が変更されたときに特定のマクロコードを実行しようとしたことがありますか? この記事では、Excelでこのジョブを処理するための簡単なトリックをいくつか紹介します。

特定のセル値がVBAコードで変更されたときに、マクロを実行または呼び出す

VBAコードの範囲内でセル値が変更されたときに、マクロを実行または呼び出す


矢印青い右バブル 特定のセル値がVBAコードで変更されたときに、マクロを実行または呼び出す

セルの値を変更してマクロコードを実行するには、次のVBAコードを使用すると便利です。次のようにしてください。

1。 セルの値が変更された場合にマクロを実行するシートタブを右クリックして、 コードを表示 コンテキストメニューから、開いた状態で アプリケーション用のMicrosoftVisual Basic ウィンドウで、次のコードをコピーして空のモジュールに貼り付けます。

VBAコード:セルの値が変更されたときにマクロを実行します。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

セルが変更された場合のドキュメント実行マクロ1

注意:上記のコードでは、 A1 コードを実行する特定のセルは、 マイマクロ 実行するマクロ名です。 必要に応じて変更してください。

2。 次に、コードウィンドウを保存して閉じます。これで、セルA1に値を入力または変更すると、特定のコードがすぐにトリガーされます。


矢印青い右バブル VBAコードの範囲内でセル値が変更されたときに、マクロを実行または呼び出す

セルの範囲内でセル値が変更されたときにマクロを実行またはトリガーする場合は、次のコードが役立ちます。

1。 セルの値が変更された場合にマクロを実行するシートタブを右クリックして、 コードを表示 コンテキストメニューから、開いた状態で アプリケーション用のMicrosoftVisual Basic ウィンドウで、次のコードをコピーして空のモジュールに貼り付けます。

VBAコード:セル値が次の範囲で変更されたときにマクロを実行します。

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

セルが変更された場合のドキュメント実行マクロ2

注意:上記のコードでは、 A1:B100 コードを実行する特定のセルは、 マイマクロ 実行するマクロ名です。 必要に応じて変更してください。

2。 次に、コードウィンドウを保存して閉じます。これで、A1:B100のいずれかのセルに値を入力または変更すると、特定のコードが一度に実行されます。


複数のブックからすべてのマクロを削除する

Kutools for Excel's すべてのマクロをバッチ削除 ユーティリティは、必要に応じて複数のブックからすべてのマクロを削除するのに役立ちます。 今すぐExcel用のKutoolsをダウンロードして無料でお試しください!

Kutools for Excel:300以上の便利なExcelアドインがあり、30日以内に制限なしで無料で試すことができます。 今すぐダウンロードして無料トライアル!


関連記事:

Excelで印刷する前にマクロを自動的に実行するにはどうすればよいですか?

Excelでセル値に基づいてマクロを実行するにはどうすればよいですか?

Excelのドロップダウンリストから選択した値に基づいてマクロを実行するにはどうすればよいですか?

Excelでハイパーリンクをクリックしてマクロを実行するにはどうすればよいですか?

ブックからシートを選択したときにマクロを実行するにはどうすればよいですか?


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

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下部
コメントを並べ替える
コメント (17)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
このモジュールは私には機能していません。 セルの値が変更されると、コードが実行されることを示しています。 セルに入力すると機能することがわかりますが、セルの値が数式(Countaなど)によって変更された場合、実行されません。 数式によってVALUEが変化したときにマクロを実行するソリューションはありますか? ありがとう、ウェイン
このコメントは、サイトのモデレーターによって最小化されました
ウェインと同じ問題。 どんな助けでも大歓迎です! ありがとうロニー
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、みんな、

はい、上記のコードはセル値が手動で変更された場合にのみ使用できます。相対セルの変更に伴って数式の結果が変更されたときに特定のマクロコードを自動的に実行する必要がある場合は、次の記事にアクセスしてください。
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
ぜひお試しいただき、ご返信をお待ちしております。
このコメントは、サイトのモデレーターによって最小化されました
動作していません...&セル値を手動で変更しています。 セットアップが必要な事前構成はありますか?
このコメントは、サイトのモデレーターによって最小化されました
手順でこれをテストし、パラメータとして使用します


Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox Target.Address& "-" e Target.AddressLocal

End Subの
このコメントは、サイトのモデレーターによって最小化されました
ええ、説明は値が変更されたときにトリガーする必要があると言っていますが、5番目のコードは値がゼロのときであり、最初のコードは値が変更されたときにもトリガーされないことを示していますが、コードを見ているときにFXNUMXキーを押すとMyMacroをトリガーしますが、値の変化には、何もない状態から何かまたはその逆になるほど反応しないようです。
このコメントは、サイトのモデレーターによって最小化されました
これは、リストの選択に基づいてテキストを表示するデータ検証リストを使用して初めて機能しました。
このコメントは、サイトのモデレーターによって最小化されました
私にとってはうまくいきました! 私のジレンマは、それを相対参照マクロにしたいということです。Enterキーを押してエントリを保存することと、Deleteキーを押してセルをクリアすることには違いがあります。
このコメントは、サイトのモデレーターによって最小化されました
ねえ、便利なコード。 変化する細胞の周りに、変化する細胞の周りにリングを挿入できるのではないかと考えていました。 そして毎週月曜日にサークルをリセットしますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、ケビン、
ここにあなたの問題を解決するための考えはありません、あなたが何か良い解決策を持っているならば、ここにコメントしてください。
このコメントは、サイトのモデレーターによって最小化されました
あなたが呼んでいるマクロはどこにありますか? Modulesフォルダーに私のものがありますが、ワークシートの任意のセルに値を入力すると、次のようなコンパイルエラーが発生します。
モジュールではなく、予期される変数またはプロシージャ。

助けてください。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、DrCartwright、
返信が遅くなってすみません。
はい、あなたが言ったように、マクロコードはモジュールに配置されている必要があり、次のスクリーンショットに示すようにコード名を自分の名前に変更する必要があります。
このコメントは、サイトのモデレーターによって最小化されました
こんにちはこんにちは
quisiera sabre el codigo para que se active una macro cuando cambia el valor de una celda de una columna、pero este valor cambia por Formula、sin que el usuario introduzcaningunvalor。
このコメントは、サイトのモデレーターによって最小化されました
こんにちはみんな、私は次の問題を解決しています:リンクが列Aに挿入されたときにウェブサイトのタイトルを削り、この値を列Bの関連するセル(その隣)に配置したいです。問題は、貼り付けたらA列のWebサイトでは、コードはリスト全体をA2列からコードで定義されている「最後の行」まで再実行します。 単一の列Aが変更された後にのみ列Bを変更する方法はありますか? つまり、列A36にリンクを貼り付けると、セルが使用範囲の中央にあるか最下部にあるかに関係なく、B36にタイトルが表示されます。 現在のように複数の入力を再実行せずにこれを使用したいと思います。 (つまり、「for i = 2 to lastrow」というループ)? また、以下をモジュラーマクロ、つまりサブからプライベートサブに変更したいと思います。ここで、「ターゲット」はA:A範囲の任意のセルです。 どうもありがとう!


サブget_title_header()



オブジェクトとして薄暗いwb

オブジェクトとしてのDimdoc

文字列としての薄暗いsURL

薄暗い最後の長さ

lastrow = Sheet1.Cells(Rows.Count、 "A")。End(xlUp).row



i=2の場合最後に

Set wb = CreateObject( "internetExplorer.Application")

sURL = Cells(i、1)



wb.navigate sURL

wb.Visible = False



wb.Busyながら

DoEvents

Wend



''HTMLドキュメント

doc=wb.documentを設定します



Cells(i、2)= doc.Title



エラー時GoToerr_clear

Cells(i、3)= doc.GetElementsByTagName( "h1")(0).innerText

err_clear:

エラー<>0の場合

Err.Clearを

次を再開

終了する場合

wb.Quit

Range(Cells(i、1)、Cells(i、3))。Columns.AutoFit

私は次の



End Subの




ありがとうございました!
このコメントは、サイトのモデレーターによって最小化されました
別のワークブック(パーツステータス)が変更を加えたときに、1つのワークブック(BOM)を自動化しようとしています。 パーツステータスファイルは15分ごとに更新されます。 これらの変更が発生したときに特定の列を自動化する方法を知る必要がありますか? 何か案は
このコメントは、サイトのモデレーターによって最小化されました
以下のコードを使用して、セルC3にあるドロップダウンボックスからの選択に応じてさまざまな列を非表示にしていますが、ワークシートの任意の場所で計算を実行すると、すべての列が非表示になります。 これを修正するにはどうすればよいですか?

プライベートサブワークシート_Change(ByValターゲットを範囲として)

Columns( "D:F")。AutoFit

文字列としての薄暗いProj1
文字列としての薄暗いProj2
文字列としての薄暗いProj3
文字列としての薄暗いProj4
文字列としての薄暗いProj5
文字列としての薄暗いProj6
文字列としての薄暗いProj7
文字列としての薄暗いProj8
文字列としての薄暗いProj9
文字列としての薄暗いProj10

Proj1 = ActiveWorkbook.Sheets( "Projects")。Range( "A1")。Value
Proj2 = ActiveWorkbook.Sheets( "Projects")。Range( "A2")。Value
Proj3 = ActiveWorkbook.Sheets( "Projects")。Range( "A3")。Value
Proj4 = ActiveWorkbook.Sheets( "Projects")。Range( "A4")。Value
Proj5 = ActiveWorkbook.Sheets( "Projects")。Range( "A5")。Value
Proj6 = ActiveWorkbook.Sheets( "Projects")。Range( "A6")。Value
Proj7 = ActiveWorkbook.Sheets( "Projects")。Range( "A7")。Value
Proj8 = ActiveWorkbook.Sheets( "Projects")。Range( "A8")。Value
Proj9 = ActiveWorkbook.Sheets( "Projects")。Range( "A9")。Value
Proj10 = ActiveWorkbook.Sheets( "Projects")。Range( "A10")。Value

範囲としての薄暗いxRG
Dim xHRow As Integer
xRG = Range( "C3")を設定します
Intersect(Target、xRG)でない場合は何もありません

Target.Value=Proj1の場合Then
Application.Columns( "E:F")。Hidden = True
Application.Columns( "D")。Hidden = False

ElseIf Target.Value = Proj2 Then
Range( "D:D、F:F")。EntireColumn.Hidden = True
Application.Columns( "E")。Hidden = False

終了する場合
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
これはまさに私が探していたものです。 ユーザーがセルに値を入力すると、単純な並べ替えマクロが実行されます。 マクロはそれ自体で正常に実行されますが、提案されたコードを使用すると、プロパティエラーの無効な使用が発生します。

何が問題なの?
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

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