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

Excelで特定のセルが変更された場合にメールを送信するにはどうすればよいですか?

この記事では、Excelで特定の範囲のセルが変更されたときにOutlookを介して電子メールを送信する方法について説明します。

特定の範囲のセルがVBAコードで変更された場合にメールを送信する


特定の範囲のセルがVBAコードで変更された場合にメールを送信する

特定のワークシートで範囲A2:E11のセルが変更されたときに、アクティブなブックが添付された新しい電子メールを自動的に作成する必要がある場合は、次のVBAコードが役立ちます。

1.特定の範囲の変更されたセルに基づいて電子メールを送信する必要があるワークシートで、シートタブを右クリックし、[ コードを表示 コンテキストメニューから。 スクリーンショットを参照してください:

2.ポップアップで アプリケーション向け Microsoft Visual Basic ウィンドウの場合は、以下のVBAコードをコピーしてコードウィンドウに貼り付けてください。

VBAコード:指定した範囲のセルがExcelで変更された場合にメールを送信する

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2017/9/12
    Dim xRgSel As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xMailBody As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set xRg = Range("A2:E11")
    Set xRgSel = Intersect(Target, xRg)
    ActiveWorkbook.Save
    If Not xRgSel Is Nothing Then
        Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Cell(s) " & xRgSel.Address(False, False) & _
            " in the worksheet '" & Me.Name & "' were modified on " & _
            Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
            " by " & Environ$("username") & "."

        With xMailItem
            .To = "Email Address"
            .Subject = "Worksheet modified in " & ThisWorkbook.FullName
            .Body = xMailBody
            .Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

免責事項:

1)。 コードでは、 A2:E11 は、メールを送信する範囲に基づいています。
2)。 必要に応じてメール本文を変更してください xMailBody コードの行。
3)。 を交換してください メールアドレス 受信者のメールアドレスが並んでいる .To = "メールアドレス".
4)。 メールの件名を一列に変更する .Subject = "ワークシートが変更されました"&ThisWorkbook.FullName.

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

これ以降、範囲A2:E11のセルが変更され、更新されたブックが添付された新しい電子メールが作成されます。 また、件名、受信者、メール本文など、指定されたすべてのフィールドがメールに表示されます。 メールを送ってください。

注意:VBAコードは、電子メールプログラムとしてOutlookを使用している場合にのみ機能します。


関連記事:


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

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)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
私はVBコードの下で立ち往生しています。 データが変更されたユーザーに電子メール通知を送信しようとしています。 メールは機能していますが、変更を加えるとすぐにメールが開始されますが、影響を受けたすべてのユーザーにすべての変更を加えた後、Excelシートが保存されて閉じられたときにメールが必要です。 また、これはExcelワークブック全体のどのシートでも機能するはずです。

助けてください...

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean、Cancel As Boolean)

'****オブジェクトと変数の宣言******

Dim xRgSel As Range Dim xOutApp As Object Dim xMailItem As Object Dim xMailBody As String Dim mailTo As String

エラーで次の再開

Sheets( "TargetSheet")。Range( "TargetRange")。Select

Application.ScreenUpdating = False Application.DisplayAlerts = False

'Set xRg = Range( "A"&Rows.Count).End(xlUp).Row

xRg = Range( "A2:DA1000")を設定します
xRgSel = Intersect(Target、xRg)を設定します


ActiveWorkbook.Save
'********** Outlook Application Opening ***********

xRgSelがない場合は何もありません

xOutApp = CreateObject( "Outlook.Application")を設定します
xMailItem = xOutApp.CreateItem(0)を設定します

xMailBody = "Cell(s)"&xRgSel.Address(False、False)&_
ワークシートの"'"&Me.Name&"'は"&_で変更されました
Format $(Now、 "mm / dd / yyyy")& "at"&Format $(Now、 "hh:mm:ss")&_
"by"&Environ $( "username")&"。"
'***********受信者リストの検索************

If Cells(xRgSel.Row、 "A")。Value = "Pankaj" Then

mailTo = "pank12 ***@gmail.com"

終了する場合

If Cells(xRgSel.Row、 "A")。Value = "Nitin" Then

mailTo = "pank ****@gmail.com"

終了する場合

If Cells(xRgSel.Row、 "A")。Value = "Chandan" Then

mailTo = "pakxro **@gmail.com"

終了する場合
'*************メール作成*************

xMailItemを使用

.To = mailTo
.Subject = "ワークシートが変更されました"&ThisWorkbook.FullName
.Body = xMailBody
'.Attachments.Add(ThisWorkbook.FullName)
。表示

最後に

xRgSel=Nothingを設定します
xOutApp=Nothingを設定します
xMailItem=Nothingを設定します

終了する場合

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Subの
このコメントは、サイトのモデレーターによって最小化されました
Pankaj Shukla様、
Excelの質問をフォーラムに投稿してください。 https://www.extendoffice.com/forum.html Excelの専門家からExcelに関するより多くのサポートを得ることができます。
このコメントは、サイトのモデレーターによって最小化されました
マクロを作成できましたが、問題が発生しています。 セルが特定のしきい値に達したときに自動的にメールを送信したいと思います。 セルは数式です。 計算の合計が上記のしきい値を下回ると、何も実行されません。 ただし、セルに直接入力すると、マクロは計画どおりに処理されます。 数式はマクロを台無しにしますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちはシシージョーンズ、
この記事の方法:Excelのセル値に基づいて電子メールを自動的に送信する方法は?
https://www.extendoffice.com/documents/excel/4656-excel-send-email-based-on-cell-value.html 問題の解決に役立つ場合があります。
このコメントは、サイトのモデレーターによって最小化されました
管理者各位


あなたの助けが必要です、



私は現場の作業員が行った日常業務の詳細を監視するExcelを持っているので、その人が特定の時間にそのExcelシートのデータを更新できなかった場合、Excelシートからメールをトリガーすることができます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
これを助けることはできません。
このコメントは、サイトのモデレーターによって最小化されました
アドレスの代わりにセル値を送信したい場合は、コードで何を変更すればよいですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
以下のVBAコードを試すことができます。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
範囲としての薄暗いxRgSel
オブジェクトとしての薄暗いxOutApp
オブジェクトとしての薄暗いxMailItem
文字列としての薄暗いxMailBody
エラーで次の再開
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xRg = Range( "A2:E11")を設定します
xRgSel = Intersect(Target、xRg)を設定します
ActiveWorkbook.Save
xRgSelがない場合は何もありません
xOutApp = CreateObject( "Outlook.Application")を設定します
xMailItem = xOutApp.CreateItem(0)を設定します
xMailBody = "Cell(s)"&xRgSel.Address(False、False)&_
xRgSel.Value&_
ワークシートの"'"&Me.Name&"'は"&_で変更されました
Format $(Now、 "mm / dd / yyyy")& "at"&Format $(Now、 "hh:mm:ss")&_
"by"&Environ $( "username")&"。"

xMailItemを使用
.To = "メールアドレス"
.Subject = "ワークシートが変更されました"&ThisWorkbook.FullName
.Body = xMailBody
.Attachments.Add(ThisWorkbook.FullName)
。表示
最後に
xRgSel=Nothingを設定します
xOutApp=Nothingを設定します
xMailItem=Nothingを設定します
終了する場合
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Subの
このコメントは、サイトのモデレーターによって最小化されました
セルの値全体ではなく、そのセルの更新されたコメントのみが必要な場合はどうなりますか?セルに追加された最新のコメントのみを表示する必要があります
このコメントは、サイトのモデレーターによって最小化されました
あなたはこれを理解しましたか?
このコメントは、サイトのモデレーターによって最小化されました
素晴らしい情報。
メールに追加できる情報に関する質問。
上記の例を使用すると...

F4に値がある場合、D4が変更されたときに生成された電子メールにF4値をどのように含めますか?
このコメントは、サイトのモデレーターによって最小化されました
その行全体を送信する必要がある場合はどうなりますか?
このコメントは、サイトのモデレーターによって最小化されました
上記のVBAコードを試しました:指定した範囲のセルがExcelで変更された場合にメールを送信します。 このVBAは、電子メールを送信する以外は機能します。 指定された範囲でデータが変更されると、変更されたセルの詳細が記載された電子メールが自動的に生成されます。 ただし、電子メールは受信者に自動的に送信されないため、ユーザーは電子メールの送信ボタンをクリックする必要があります。 私がここで探しているのは、電子メールが生成されたときに自動的に受信者に送信する必要があるということです。 このためのコードを提供するのを手伝ってください。 どうもありがとう
このコメントは、サイトのモデレーターによって最小化されました
こんにちはジミージョセフ、
「.Display」の行を「.Send」に置き換えてください。 私が助けることができることを願っています。 コメントありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは; 他のセル(最初の行と最初の列)からの情報を使用して表示されるテキストを変更する方法はありますか? たとえば、セルK15を変更した場合、セルA15とK1のメッセージ情報に含めたいですか? コードで何を変更する必要がありますか? どうもありがとうございます
このコメントは、サイトのモデレーターによって最小化されました
こんにちはラオーナ。 どうすればこれができるかわかりますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは。 別のセル範囲が編集された場合に電子メールが別の電子メールアドレスに送信されるようにコードを変更するにはどうすればよいですか?
このコメントは、サイトのモデレーターによって最小化されました
このリクエストについて何か助けはありますか? 私は同じ問題を抱えています。 行ごとに複数のメールアドレスを追加したいのですが、XNUMXつの行を変更すると、ワークシート全体が変更されます。 変更をXNUMX行のみに制限するにはどうすればよいですか?
このコメントは、サイトのモデレーターによって最小化されました
リニーを編集する:
1)。 コードでは、A2:E11は、に基づいて電子メールを送信する範囲です。
及び
3)。 .To ="EmailAddress"の行でEメールアドレスを受信者のEメールアドレスに置き換えます。

正常に動作します。
このコメントは、サイトのモデレーターによって最小化されました
これについてさらに説明していただけますか。 変更されている別の範囲に基づいて、コードを繰り返して別の電子メールに送信するにはどうすればよいですか。 以下のコードをコピーして貼り付け、コメントに従って変更してみましたが、それでも最初の範囲だけがコマンドを実行してメールを書き込んでいるようです。
このコメントは、サイトのモデレーターによって最小化されました
誰かがこれに対する答えを持っていますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、シートで変更された4つの値を使用して、シートでメールを送信しようとしていました。 列Hでステータスが「9」に変更される場合、左側の注文IDを140人のユーザーに送信する必要があります。 シートは動的に機能するため、D9:D140の範囲があり、注文IDが保存され、ステータスの変更はH4:HXNUMXの同じ範囲で行われます。 ステータスが="XNUMX"に変更されたときに、目標を達成して注文IDを顧客に送信するにはどうすればよいですか?
このコメントは、サイトのモデレーターによって最小化されました
変更されたセルアドレスの代わりに、同じ列のxMailBodyに別の参照セルを表示することは可能でしょうか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちはサム、変更されたセルアドレスの同じ列でランダムに参照セルを選択することを意味しますか?またはコードのxMailBody行に参照セルを手動で入力しますか?コードに参照セルを手動で入力するのは簡単です、以下に示すように、参照セルを二重引用符で囲みます。xMailBody = "Cell(s)"& "D3" &"、"& "D8" &_

このコメントは、サイトのモデレーターによって最小化されました
これを変更して、範囲内のセルが「はい」と表示されるように変更された場合にのみ電子メールを表示するようにすることは可能ですか。 それ以外の値の場合は何もしないようにします。
このコメントは、サイトのモデレーターによって最小化されました
コードをありがとうございます。このコードは、値を入力してEnterキーを押すと機能します。 しかし、私の場合、セルは自動的に数式で埋められており、値に達するとメールが開かないため、この場合はコードが機能しません。 前もって感謝します!
このコメントは、サイトのモデレーターによって最小化されました
こんにちはハカナ、
次のVBAコードは、問題の解決に役立ちます。 ぜひお試しください。 ご意見ありがとうございます。

Private Sub Worksheet_Change(ByVal Target As Range)
'によって更新されました Extendoffice 2022 / 04 / 15
範囲としての薄暗いxRgSel
オブジェクトとしての薄暗いxOutApp
オブジェクトとしての薄暗いxMailItem
文字列としての薄暗いxMailBody
Dim xBoolean As Boolean
範囲としての薄暗いxItsRG
範囲としてxDDを暗くする
範囲としての薄暗いxD
エラーで次の再開
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
xRg = Range( "E2:E13")を設定します

xItsRG = Intersect(Target、xRg)を設定します
xDDs = Intersect(Target.DirectDependents、xRg)を設定します
xDs = Intersect(Target.Dependents、xRg)を設定します
そうでない場合(xItsRGは何もありません)
xRgSel=xItsRGを設定します
xBoolean = 真
ElseIf Not(xDDs Is Nothing)Then
xRgSel=xDDsに設定します
xBoolean = 真
ElseIf Not(xDs Is Nothing)Then
xRgSel=xDsに設定します
xBoolean = 真
終了する場合


ActiveWorkbook.Save
xBooleanThenの場合
Debug.Print xRgSel.Address


xOutApp = CreateObject( "Outlook.Application")を設定します
xMailItem = xOutApp.CreateItem(0)を設定します
xMailBody = "Cell(s)"&xRgSel.Address(False、False)&_
ワークシートの"'"&Me.Name&"'は"&_で変更されました
Format $(Now、 "mm / dd / yyyy")& "at"&Format $(Now、 "hh:mm:ss")&_
"by"&Environ $( "username")&"。"

xMailItemを使用
.To = "メールアドレス"
.Subject = "ワークシートが変更されました"&ThisWorkbook.FullName
.Body = xMailBody
.Attachments.Add(ThisWorkbook.FullName)
。表示
最後に
xRgSel=Nothingを設定します
xOutApp=Nothingを設定します
xMailItem=Nothingを設定します
終了する場合
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Subの
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、私は同様のコードを作成しましたが、セル値が削除された場合、それが保存/閉じられたときに電子メールを送信しないという条件を***したいと思います。 セルの値が入力された場合にのみメールを送信します。 これを行う方法を知っていますか? これは私のコードです:

Excelワークブックが更新されたときに誰かに自動メールで送信するためのコード

シートコード:

OptionExplicit'Excelワークシート変更イベント範囲
プライベートサブワークシート_Change(ByValターゲットを範囲として)
交差しない場合(Target、Range( "C3:D62"))は何もありません
'Target.EntireRow.Interior.ColorIndex = 15
Range( "XFD1048576")。Value = 15
終了する場合
交差しない場合(Target、Range( "I3:J21"))は何もありません
'Target.EntireRow.Interior.ColorIndex = 15
Range( "XFD1048576")。Value = 15
終了する場合
End Subの


ワークブックコード:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Me.Saved=Falseの場合Me.Save

オブジェクトとしての薄暗いxOutApp
オブジェクトとしての薄暗いxMailItem
Dim xName As String

If Range( "XFD1048576")。Value = 15 Then
エラーで次の再開
xOutApp = CreateObject( "Outlook.Application")を設定します
xMailItem = xOutApp.CreateItem(0)を設定します
xname = Activeworkbook.fullname
xMailItemを使用
.To="メール"
.CC = ""
.Subject="メッセージ"
.Body = "メッセージ!"
.Attachments。***xName
。表示
'。送信
最後に
終了する場合
xMailItem=Nothingを設定します
xOutApp=Nothingを設定します



End Subの

プライベートサブWorkbook_Open()
Range( "XFD1048576")。Clear
End Subの
このコメントは、サイトのモデレーターによって最小化されました
こんにちはすべて、

der Code würde gut für mein vorhaben passen, aber gibt es die Möglichkeit, dass er eine E-Mail beim speichern schreibt mit allen Zellen die gändert wurden? So wie es jetzt ist ,würde er jede gänderte Zelle einzeln senden. Dies ist dann problematisch wenn zB 10 Zellen angepasst werden was 10 E-Mails beeuten würde. Und gibt es die Möglichkeit, die gesamte gänderte Zelle bei mir von A bis Y in einer E-Mail zu senden? Bisher haut der ja die Zellnummer in die E-Mail, wenn aber jemand anders Filtert wird er die Änderung nicht mehr finden.
このコメントは、サイトのモデレーターによって最小化されました
Esser123 さん、こんにちは。
次の VBA コードが役に立ちます。 指定した範囲のセルを変更してワークブックを保存すると、電子メールがポップアップして、変更されたすべてのセルが電子メール本文に一覧表示され、ワー​​クブックも添付ファイルとして電子メールに挿入されます。 次の手順に従ってください。
1. メールを送信するセルを含むワークシートを開き、シート タブを右クリックして、 コードを表示 右クリックメニューから。 次に、次のコードをシート (コード) ウィンドウにコピーします。
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220921
Dim xAddress As String
Dim xDRg, xRgSel, xRg As Range

xAddress = "A1:A8"
Set xDRg = Range(xAddress)
Set xRgSel = Intersect(Target, xDRg)
On Error GoTo Err1
If Not xRgSel Is Nothing Then
If ThisWorkbook.gChangeRange = "" Then
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
Else
Set xRg = Range(ThisWorkbook.gChangeRange)
Set xRg = Application.Union(xRg, xRgSel)
ThisWorkbook.gChangeRange = xRg.AddressLocal(False, False, xlA1, True, False)
End If
End If
Exit Sub
Err1:
      ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
End Sub

2. Visual Basic エディターで、ダブルクリックします。 このワークブック をクリックし、次の VBA コードを ThisWorkbook(コード) 窓。
Option Explicit
Public gChangeRange As String
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220921
Dim xRgSel, xRg As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
'On Error Resume Next
On Error GoTo Err1
Set xRg = Range(gChangeRange)
If Not xRg Is Nothing Then
   Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Email Body: " & vbCrLf & "The following cells were modified:" & xRg.Address(False, False)
        With xMailItem
            .To = "Email Address"
            .Subject = "Worksheet modified in " & ThisWorkbook.FullName
            .Body = xMailBody
            .Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
End If
Err1:
gChangeRange = ""
End Sub
このコメントは、サイトのモデレーターによって最小化されました
わずかな変更でメールをトリガーするのに助けが必要です。 数値を入力したりセルに手動で情報を入力したりする代わりに、列 B のセルは、その行の他のセルの数式からトリガーされて「Y」に変わります。 列 B の数式は =IF([@[在庫数]]>[@[再注文レベル]],,"Y") であり、在庫が少なく、再注文が必要であることを示しています。 列 B のセル値が「Y」に変化したときに自動メールをトリガーする必要があるため、在庫が少なくなったことがメールで自動的に通知されます。 すでに提供されているコードを変更するために考えられることはすべて試しましたが、何もうまくいかないようです...助けてください!
このコメントは、サイトのモデレーターによって最小化されました
こんにちは。
次の VBA コードは、問題の解決に役立ちます。 ぜひお試しください。 コメントありがとうございます。
Dim xRg As Range
'Update by Extendoffice 20221019
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("B:B"), Target)
If xRg Is Nothing Then Exit Sub
If Target.Value = "Y" Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2"
On Error Resume Next
With xOutMail
.To = "Email Address"
.CC = ""
.BCC = ""
.Subject = "send by cell value test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xTarget As String
Dim xRg As Range
'Set xRg = Application.Range("B:B")
Set xRg = Intersect(Range("B:B"), Selection.EntireRow)
On Error GoTo Err01
If xRg.Value = "Y" Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、このチュートリアルをありがとうございました。
J'ai cependant une hardé pour l'application de la plage de recherche.
Dans le code, j'ai demandé à verifier la plage C2:C4.
C2、C3、または C4 の独自性を変更する機能を提供します。 Cela fonctionne aussi si je modifie C2+C3+C4 または C2+C3 または C3+C4 mais cela ne fonctionne pas si j'ai un saut dans la plage. たとえば、修飾子 C2 と C4 は修飾子 C3 を使用しません。
Est-ce que quelqu'un pourrait m'aider pour m'indiquer または se trouve mon erreur ?
ありがとうD'AVANCE。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
'によって更新されました Extendoffice 20220921
Dim xAddress を文字列として
Dim xDRg、xRgSel、xRg As Range

xAddress = "C2:C4"
xDRg = Range(xAddress) を設定します。
xRgSel = Intersect(Target, xDRg) を設定します。
エラー時GoToErr1
xRgSelがない場合は何もありません
If ThisWorkbook.gChangeRange = "" Then
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)

xRg = Range(ThisWorkbook.gChangeRange) を設定します。
xRg = Application.Union(xRg, xRgSel) を設定します。
ThisWorkbook.gChangeRange = xRg.AddressLocal(False, False, xlA1, True, False)
終了する場合
終了する場合
サブを終了
Err1:
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
End Subの


-----

Option Explicit
文字列としてのパブリック gChangeRange
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'によって更新されました Extendoffice 20220921
Dim xRgSel, xRg As Range
オブジェクトとしての薄暗いxOutApp
オブジェクトとしての薄暗いxMailItem
文字列としての薄暗いxMailBody
'エラー時再開次
エラー時GoToErr1
xRg = Range(gChangeRange) を設定します。
xRgがない場合は何もありません
xOutApp = CreateObject( "Outlook.Application")を設定します
xMailItem = xOutApp.CreateItem(0)を設定します
xMailBody = "Cher Jean-Marie, " & vbCrLf & vbCrLf & "Dans le fichier : " & ThisWorkbook.FullName & vbCrLf & "La plage de cellules a été modifiée :" & xRg.Address(False, False) & vbCrLf & vbCrLf &「心のこもった」
xMailItemを使用
.To = "x.xxxxxx@xxxx.fr"
.Subject = "Données modifiées " & ThisWorkbook.Name
.Body = xMailBody
.Attachments.Add(ThisWorkbook.FullName)
。表示
最後に
xRgSel=Nothingを設定します
xOutApp=Nothingを設定します
xMailItem=Nothingを設定します
終了する場合
Err1:
gChangeRange = ""
End Subの
このコメントは、サイトのモデレーターによって最小化されました
5人にメールを送りたいです。 各電子メール アドレス間で使用される区切り記号は何ですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちはジョー、
電子メール アドレスを区切るにはセミコロンを使用してください。
このコメントは、サイトのモデレーターによって最小化されました
ここで別の質問です。 3 つのセルが変化すると、メールが送信されます。 3 つのセルが変化すると、1 つのメールが送信されます。 編集が完了したときにメールを XNUMX 通だけ送信するようにするには、どうすればこれを停止できますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちはジョー、
コードで範囲を「A2:E11」と指定したとします。 編集全体がいつ完了したかを確認するにはどうすればよいですか?
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

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