• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Celwaarde excel in mail opnemen

Status
Niet open voor verdere reacties.

pinobird

Gebruiker
Lid geworden
13 okt 2010
Berichten
22
Allen,

Ik heb een vb-script die een mail uitstuurt op het moment dat een waarde in de range B:B wijzigt. In het script wordt het celnummer aangegeven dat gewijzigd is, maat ik wil graag de waarde van die cel opgenomen hebben en ook de waarde van de cel in dezelfde rij in kolom C.

Enig idee hoe ik dat voor elkaar kan krijgen?

Code:
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("B:B")
    Set xRgSel = Intersect(Target, xRg)
    ActiveWorkbook.Save
    If Not xRgSel Is Nothing Then
        Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Cel " & xRgSel.Address(False, False) & _
            " in het KPI Dashboard weegschalen '" & Me.Name & "' is toegevoegd op " & _
            Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
            " door " & Environ$("username") & "."
 
        With xMailItem
            .To = "mailaddress"
            .Subject = "Artikelen toegevoegd in " & ThisWorkbook.FullName
            .Body = xMailBody
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
 
De waarde staat in Target.Value en de rij in Target.Row
 
Dank je, de Target.Value werkt goed voor de cel zelf. Ik wil alleen ook de waarde van de naastgelegen cel meenemen. Als ik Target.Row gebruik krijg ik alleen het rijnummer te zien en niet de waarde van de betreffende cel naast de Target.Value.
 
Uiteraard gebruik je dan Cells(Target.Row, 3).Value voor cel C op dezelfde rij.
Of: Range("C" & Target.Row).Value

Zo zijn er nog wel meer varianten, afhankelijk van wat je precies wilt.
Het gaat erom dat je met Target.Row het juiste rijnummer hebt.
 
Laatst bewerkt:
Dank je. De code is nu geworden

Code:
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("D:D")
    Set xRgSel = Intersect(Target, xRg)
    ActiveWorkbook.Save
    If Not xRgSel Is Nothing Then
        Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "GTIN: " & Cells(Target.Row, 2).Value & vbNewLine & _
        "Omschrijving: " & Cells(Target.Row, 3).Value & vbNewLine & vbNewLine & _
        "Is toegevoegd op regel " & Target.Row & " aan het KPI Dashboard weegschalen " & "op " & Format$(Now, "mm/dd/yyyy") & " om " & Format$(Now, "hh:mm:ss") & vbNewLine & vbNewLine & _
        "Graag oppakken!" & vbNewLine & vbNewLine & _
        ThisWorkbook.FullName
 
        With xMailItem
            .To = "xxx@xxx.nl"
            .Subject = "Artikelen toegevoegd in KPI Dashboard Weegschaaletiketten"
            .Body = xMailBody
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Alles werkt prima. Ik vroeg me alleen af of het mogelijk is dat de mail ook automatisch verzonden wordt. Nu krijg ik een popup met een nieuw mailbericht en moet ik nog op verzenden drukken.
 
Wijzig .Display in .Send
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan