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

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

ブックに複数のマクロコードがあるとします。次に、セル値に基づいてこれらのコードを実行します。 この記事では、Excelを使用するときに日常業務で苦しむ可能性のあるいくつかの状況について説明します。

セルの値がVBAコードで特定の値よりも大きいか小さい場合は、マクロを実行またはトリガーします

セル値がVBAコードの特定のテキストと等しい場合は、マクロを実行またはトリガーします


矢印青い右バブル セルの値がVBAコードで特定の値よりも大きいか小さい場合は、マクロを実行またはトリガーします

たとえば、セルA1の値が10〜50の場合は、macro1を実行し、値が50より大きい場合は、macro2を実行します。 このジョブをExcelで解決するには、次のVBAコードを適用してください。

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

VBAコード:セルの値が次の値より大きいか小さい場合にマクロを実行します。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
    End If
End Sub

セル値1に基づいてマクロを実行するドキュメント

注意:上記のコードでは:

A1 に基づいてマクロを実行する特定の値を含むセルです。

ケース10から50:Macro1:値が10〜50の場合、Macro1を実行することを意味します。

ケースは> 50:Macro2:値が50より大きい場合は、Macro2を実行することを意味します。

これらのマクロ名と基準を必要に応じて変更してください。また、次の基準を追加することもできます。 場合 スクリプト。

2。 次に、このコードウィンドウを保存して閉じます。ここで、セルA10に入力した値が50〜1の場合、Macro1がトリガーされ、入力した値が50より大きい場合、Macro2が実行されます。


矢印青い右バブル セル値がVBAコードの特定のテキストと等しい場合は、マクロを実行またはトリガーします

たとえば、セル内の特定のテキストに基づいてマクロをトリガーする場合は、テキスト「削除」が入力された場合はmacro1を実行し、テキスト「挿入」が入力された場合はmacro2を実行します。 次のコードはあなたに有利に働くことができます。

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

VBA コード: セルの値が特定のテキストの場合にマクロを実行する

Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "Delete" Then
 Call Macro1
End If
If target.Value = "Insert" Then
Call Macro2
End If
End Sub 

セル値2に基づいてマクロを実行するドキュメント

注意:上記のコードでは、「削除"と"インセット」は、に基づいてマクロを実行するセルテキストです。 マクロ1 及び マクロ2 テキストに基づいて実行するマクロです。 必要に応じて変更してください。

2。 次に、このコードを保存してウィンドウを閉じます。セルA1に「削除」というテキストを入力すると、macro1がトリガーされ、「挿入」というテキストを入力すると、macro2が実行されます。


関連記事:

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下部
コメントを並べ替える
コメント (19)
5の5を評価 · 1の評価
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、1つのセルに基づいてマクロを実行する場合はどうでしょうか。 XNUMXつのセルはテキストベースで、もうXNUMXつのセルは数値を持っていますか? 次に、XNUMXつのセルが希望どおりに表示される場合はマクロを呼び出します。たとえば、最初のセルは「はい」、XNUMX番目のセルはXNUMXで、そうでない場合はポップボックスに「見つかりません」と表示されます。
このコメントは、サイトのモデレーターによって最小化されました
要件:
選択に基づく
以下と同じ次元のXNUMXつのプロパティをフォローするためのドロップダウンリストがあります。
そして、細胞から派生する46つの派生セルがあります(G47、G48、GXNUMX)

シナリオ:
コストセンターのドロップダウンリストから値を選択すると、コストセンターのドロップダウンリスト(H46)から選択した値がコストセンターの派生セル(K46)に入力され、他の47つの派生セル(K48とkXNUMX)は空白になります。

同様に、Budget managerドロップダウンリストから値を選択すると、Budgetmanager派生セルにBudgetmanagerドロップダウンリスト(H47)から選択した値が入力され、他の45つの派生セル(K48とkXNUMX)は空白になります。
このコメントは、サイトのモデレーターによって最小化されました
私は結果分析に取り組んでいます。 この場合、Excelのデータは、この名前、サブ名、クレードのようになります。 ここで、結果からすべての合格または成功した候補番号を見つけたいと思います。 どうすれば入手できますか。 なぜなら、私は6つの異なる主題を持っており、それらの結果はXNUMX枚のExcelシートになっているからです。 学生がXNUMXつの科目で失敗した場合、彼は成功した学生ではありません。 すべての件名で名前を削除するにはどうすればよいですか。
このコメントは、サイトのモデレーターによって最小化されました
同じワークシートの両方のコードを修正してください。
完全に機能する最初のコード
プライベートサブワークシート_Change(ByValターゲットを範囲として)
交差しない場合(Target、Range( "D1"))は何もありません
ケース範囲( "D1")を選択
ケース「0.5」:半分
ケース「1」:XNUMXつ
ケース「1.25」:OneTwentyFive
選択して終了
終了する場合
End Subの

XNUMX番目のコードが機能していません(plzは以下を修正してください)
Private Sub Change(ByVal Target As Range)
交差しない場合(Target、Range( "D2"))は何もありません
ケース範囲( "D2")を選択
ケース「9.53」:ninepointfivethree
選択して終了
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
Olá, quero fazer o seguinte:
Na Celula A1, assim que ela estiver preenchida passe para a celula de baixo, no caso A2.
Eu uso um leitor de codigo de barras para cadastrar produtos, e ele lê os numeros automaticos, ai tenho que ficar apertando ENTER para ir para celula de baixo.

ありがとうございました!
このコメントは、サイトのモデレーターによって最小化されました
Hola, una consulta, como se haría si por ejemplo dado un numero se pueda ejecutar las dos macros
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、グスタボ
問題を解決するには、次のコードを適用してください。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        If Target.Value > 10 And Target.Value < 50 Then
         macro1
         macro2
        End If
    End If
End Sub

ぜひお試しください。お役に立てば幸いです。
このコメントは、サイトのモデレーターによって最小化されました
ボンジュール、
je souhaiterais アップリケ cette マクロ アモン コード。 Le problème est que la cellule s'incrémente via une toupie et le code ne reconnais pas le changement de valeur de la cellule.
Quand je saisie la valeur manuellement celà fonctionne correctement.

メルシーD'AVANCE
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、ジルさん。
挿入する必要があります スピン ボタン (ActiveX コントロール) 最初に、次に右クリックして選択します コードを見る、次に、以下のコードをコピーして既存のスクリプトの間に貼り付けます。
Dim xWSh As Worksheet
Dim xOL As OLEObject
Dim xRg As Range
Set xWSh = Application.ActiveSheet
Set xOL = xWSh.OLEObjects("SpinButton1") 'The name of the spin button
Set xRg = xWSh.Range(xOL.LinkedCell)
If IsNumeric(xRg) And xRg.Address = "$A$1" Then
        Select Case xRg.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
End If

https://www.extendoffice.com/images/stories/comments/comment-skyyang/DOC-RUN-CODE.png

ぜひお試しください。お役に立てば幸いです。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは!

私はVBAに非常に慣れていないので、私が持っているExcelシートに対してこのソリューションを試しました。 私は基本的にExcelに長いリストを持っています.T列にYesまたはNoと入力する必要があります.Yesと入力した場合はマクロを実行してください...範囲を定義するさまざまな方法を試しましたが、何も機能しません。

Sub worksheet_change(ByVal 対象範囲)

ターゲットを設定 = Range("T:T")
If target.Value = "Yes" その後
Macro1 を呼び出す
終了する場合

End Subの

この問題を強調します (実行時エラー - タイプの不一致): If target.Value = "Yes" Then

誰も助けることができますか?

よろしく、イザベラ
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、ウェスターガード
次の VBA コードが役立つ場合があります: (注: の名前を変更してください マクロ1 自分のコードネームに)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("T:T")) Is Nothing Then
If Target.Value = "Yes" Then
      Call Macro1
    End If
    End If
End Sub

ぜひお試しください。お役に立てば幸いです。
このコメントは、サイトのモデレーターによって最小化されました
どうもありがとうございました! それは今動作します:)
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
セル A1 数式の計算結果に基づいてこのコード ベースを変更する方法
サブ Worksheet_Calculate()
助けてください

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Target.Cells.Count> 1の場合、Subを終了します
IsNumeric(Target) And Target.Address = "$A$1" の場合
CaseTarget.Valueを選択します
ケース10から50:Macro1
ケースは> 50:Macro2
選択して終了
終了する場合
End Subの
5の5を評価
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、FGです。
コードを数式セルで機能させるには、次のコードを適用してください。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    ElseIf (Not Intersect(Range("$A$1"), Target.Dependents) Is Nothing) Then
        Set Rg = Intersect(Range("$A$1"), Target.Dependents)(1)
        Select Case Rg.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    End If
End Sub

試してみてください。お役に立てば幸いです。
このコメントは、サイトのモデレーターによって最小化されました
チャオ・スカイヤン。 Spero tu possa aiutarmi. Ho un programmino in vba che basandosi su variazioni di prezzo di una cella (E1), collegata in DDE con una piattaforma di trade di borsa, fissa i prezzi: Massimo, Minimo, Apertura, Chiusura, per poi passare alla riga successiva in base a un intervallotemporale impostato all'apertura del foglieo elettronico. L'algoritmo da me sviluppato fa si che nelle Colonne: "BH" e "BI" vengano visualizzati i prezzi di acquisto e di vendita, ma solo quando soddisfatte le condizioni date, altrimenti le celle non restituiscono nessun valore. Quello di cui avrei bisogno è di un avviso sonoro .wav che mi avvisi quando viene restituito un valore, di acquisto o di vendita, in modo di non dover fissare lo schermo per 14 ore al giorno. Ho provato a inserire un codeice "SoundMe()" trovato online, ma suona ogni volta che c'è un nuovo massimo o un nuovo minimo nella riga in cui il programma sta aggiornando i prezzi. Pensi che il problema si possa risolvere? Grazie per l'attenzione
スティーブン
このコメントは、サイトのモデレーターによって最小化されました
、おはようございます
ho provato il listato che permette di richiamare 2 macro al cambio del valore di una cella, se quel cambio deriva da una funzione "se" non funziona, se digito i valori (vero o falso) funziona.

ポッソ・オヴィアーレに来ますか?
Eventualmente come potrei evitare di utilizzare il condizionale sulla cella e far verificare al listato se la cella che deve far avviare le macro è compilata o meno?

グラツィエ
このコメントは、サイトのモデレーターによって最小化されました
、おはようございます
vorrei eseguire una macro quando una in una cella viene inserito un controllo "if" o se viene inserita una data e non un numero.

Ad esempio se nella cella A1 inserisco: If(B2=0;vero;falso) e la macro leggendo vero mi nasconde lo sheet2 altrimenti mi scopre la sheet 2.

ポッソ運賃ですか?
Riesco a far funzionare il tutto se inserisco in A1 manualmente un valore (in questo caso vero o falso)。

感謝
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、カルロ。
実際、この記事の XNUMX 番目のコードで問題を解決できます。
注意: コード内のテキストを True と False に変更し、コード名を独自のものに変更するだけです。
Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "True" Then
 Call Macro1
End If
If target.Value = "False" Then
Call Macro2
End If
End Sub 


もう一度お試しください。ありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、

ich bräuchte dafür ein Makro,

ich kann dieses Problem nicht alleine lösen, wäre super wenn mir jemand helfen könnte.

M1 steht die Zahl 5, jetzt soll der Bereich von A83 bis A683 auf die Zahl 5 geprüft werden, sollte zB A111 die Zahl 5 enthalten, dann soll C111 + 1 ( wenn in C111 23 steht dann soll da 24 stehen). Genau so wenn in A444 eine 5 steht, dann soll C444 + 1 ( wenn C444 = 99 dann 100).
Immer wenn der Wert mit M1 übereinstimmt, dann soll diese Zelle in Spalte C immer wieder + 1 zählen. また、23 +1 dann 24 + 1 dann 25 +1 usw usw.


Vielleicht kann mir da jemand helfen,

事前にありがとうございます。

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

フォローする

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