• 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.

werkblad blad1 blad2 enz

Status
Niet open voor verdere reacties.

jdrmer

Gebruiker
Lid geworden
8 jan 2012
Berichten
103
Dames en heren,
ben al een tijdje aan het proberen, maar kom niet verder.
Ik heb werkend dat als er op het kruisje geklikt wordt dat deze naar het MENU navigeert en dan de gegevens van blad1 worden gemailt.
Maar als ik op blad2 klik werkt dit niet meer omdat dit in de VBA van workbook staat.
Ik heb getracht Private Sub workbook_BeforeClose(Cancel As Boolean) te wijzigen naar "Private Sub blad1", echter dat werkt niet.
Ik zou graag willen dat als er op het kruisje van het betreffende werkblad blad1 geklikt wordt,
dat deze naar het werkblad MENU navigeert en dan een mail zend zie VBA, maar ook voor blad2 enz..
En de hele file na deze actie opslaat zie VBA.
Wie kan wil me helpen?
 

Bijlagen

Wat bedoel je met het kruisje van een werkblad? Er is maar 1 kruisje en die is om het document te sluiten.

En een Workbook event gaat uiteraard niet werken in de Worksheet sectie.
 
Laatst bewerkt:
Dan hoef je alleen maar in de Sub workbook_BeforeClose de controleren of het huidige werkblad Blad1 is en als dat niet zo is doe je:
Code:
Cancel = True
Exit Sub

Dit dus:
Code:
Private Sub workbook_BeforeClose(Cancel As Boolean)
    If ActiveSheet.Name <> "Blad1" Then
        Cancel = True
        Exit Sub
    End If
    
    sn = Sheets("blad1").Range("b6:ak38")
    c01 = "<table border=1 bgcolor=#FFFFF0#>"
    For j = 1 To UBound(sn)
        c01 = c01 & "<tr><td>" & Join(Application.Index(sn, j), "</td><td>") & "</td></tr>"
    Next
    c01 = c01 & "</table><P></P><P></P>"

    With CreateObject("Outlook.Application").CreateItem(0)
        .To = "binairebrief@gmail.com"
        .Subject = "aanvraag"
        .HTMLBody = c01
        .Display
        .Send
    End With

    Sheets("Menu").Activate
    ActiveWorkbook.SaveAs Filename:="X:\test.xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, _
        CreateBackup:=True
End Sub

Dat plaats je uiteraard in de ThisWorkbook sectie.
Die ChDir opdracht kan je achterwege laten.
Wegens een bug moet je bij het gebruik van HTMLBody bij het mailen zowel .Display als .Send gebruiken. En een email adres begint nooit met een spatie.

Wil je dat het werkboek toch wordt afgesloten als het active blad niet Blad1 is, maar dan zonder te mailen, vervang dan de Cancel = True door Cancel is False.
 
Laatst bewerkt:
Bedankt,

Als er op het kruisje wordt geklikt om af te sluiten en je staat in blad2 moet er naar werkblad menu genavigeert en dan mailen en dan automatisch opslaan en afsluiten.
Dit moet ook werken als je in werkblad3 enz staat.
mvg Jan
 
Dan moet het dus altijd worden uitgevoerd, dat begreep ik niet uit he eerste vraag. Dan kan dus gewoon die controle op bladnaam eruit en is wat je al had staan in Workbook_Close voldoende, maar dan is niet duidelijk wat nu eigenlijk het probleem is. Dat kruisje heeft niks met bladnamen te maken. het maakt dan dus niet uit op welk blad je bent.
 
De werkbladen hebben toch verschillende namen blad1 en blad2 enz, dus als ik nu in blad2 sta en klik op het kruisje gebeurt er niets.
En dat is de wens, dat de gegevens van blad2 en blad3 enz worden gemailt.
 
Voor dat kruisje maakt het niet uit op welk blad je staat. Die heeft betrekkeing op het document, niet op het werkblad. Als je dus gegevens van Blad2, Blad3 enz. wilt mailen moet je dat in de code van Workbook_Close aangeven.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan