Macrocode (RightClick) van werkblad verdwijnt bij backup en restore van het werkblad

Status
Niet open voor verdere reacties.

RobBlok

Gebruiker
Lid geworden
10 mei 2016
Berichten
33
Hallo,

Ik heb een probleem met het behouden van Private sub functies (rechtermuisklik, dubbelklik) die in een werkblad zitten opgesloten.
Vanuit een werkbook wordt één werkblad geëxporteerd met

Code:
Sub UpdateSchrijfTijdwensenDocenten()
'
' Maak Backup van werkblad Tijdwensen docenten
'
    Dim FileNameVal As String
    
    Tijd = "Tijdwensen docenten"
    Bediening = "Bediening"
    
    Sheets(Tijd).Select
    Cells.Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Application.DisplayAlerts = False
    Backup = "Backup " & Tijd
    ActiveSheet.Name = Backup
    Application.EnableEvents = True 'stond eerst op False
    FileNameVal = Application.GetSaveAsFilename(Backup, "Excel werkblad met Macrofunctie (*.xlsm), *.xlsm")
    Cancel = True
    If FileNameVal = "False" Then Exit Sub 'Gebruiker heeft op cancel gedrukt
    Application.EnableEvents = True 'nu overbodig maar als events False waren gezet dan herstellen
    ActiveWorkbook.SaveAs Filename:=FileNameVal, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=True 'Create backup heeft ook op False gestaan
    Application.EnableEvents = True
    ActiveWindow.Close

    'terug naar Bediening
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Sheets(Bediening).Select
End Sub

Als ik dit blad open dan zijn de Private subs weg.
De functie is
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'
' Rechtermuis selectie
'
Dim strRange As Range
    If ActiveSheet.Name = "Tijdwensen docenten" Then
        Positie = ActiveCell.Address
        Kolom = Mid(Positie, 2, 1)
        Rij = Val(Right(Positie, Len(Positie) - 3))
        Roosterbreedte = Sheets(1).Cells(4, 6)
        LaatsteRegelTijdwensen = Sheets("Tijdwensen docenten").Range("A" & Rows.Count).End(xlUp).Row
        Tekst = Cells(LaatsteRegelTijdwensen, 1)
        If Tekst = "Totaal inzet docenten" Then LaatsteRegelTijdwensen = Range("A" & Rows.Count).End(xlUp).Row - 1
        If Tekst = "Filtering" Then LaatsteRegelTijdwensen = Range("A" & Rows.Count).End(xlUp).Row - 6
        If Tekst = "Aantallen" Then LaatsteRegelTijdwensen = Range("A" & Rows.Count).End(xlUp).Row - 7
        If Tekst = "Procenten" Then LaatsteRegelTijdwensen = Range("A" & Rows.Count).End(xlUp).Row - 8

        Keuze= ActiveCell.Value
        If Keuze= "v" Or Keuze= "a" Or Keuze= "w" Or Keuze= "g" Or Keuze= "h" Or Keuze= "z" Then
            RangeSelectie.Show
        End If
    End If
End Sub


Heeft iemand hiervoor een oplossing om een blad weg te schrijven met behoud van de Private sub functie?
 
Laatst bewerkt:
Zet VBA code svp tussen code 'tags' (# icoon in het editorscherm van dit forum)

Waarom trekken ze bij jullie op school geen geld uit om jullie een cursus te geven hoe je fatsoenlijk/efficënt met jullie hulpmiddelen (in dit geval Excel) kunt werken ?

Het antwoord is dat je het werkblad moet kopiëren, niet slechts de gegevens in het werkblad.
 
Laatst bewerkt:
Werken met VBA

Hallo snb,

Hartelijk dank voor het antwoord alhoewel ik er denk ik nog niet mee uit de voeten kan.
Ik zal voortaan die code tags gebruiken, wist ik niet, excuses daarvoor. Kan dat nog achteraf worden aangepast?

Ik kopieer toch het werkblad of die ik iets verkeerds?

Overigens ik ben niet van een school en ben een gepensioneerde man voor alle duidelijkheid die graag zijn arbeidsverleden zelf nog wat actief wil inzetten in programmeren
Scholen hebben genoeg nascholingsgelden.
 
De code tags kun je achteraf toevoegen: (bericht aanpassen).

Je kopieert het werkblad niet; gebruik F8 in de vbeditor om per stap te zien wat er in Excel gebeurt.
 
Laatst bewerkt:
Beste snb,

Hartelijk dank voor de oplossing. En wat cursussen betreft, dat kunnen gepensioneerden echt niet betalen. Het is vrije tijd hobbywerk, alsnog bedankt het werkt!
 
De code tags staan er nog niet in.

Ooit van seniorweb gehoord ?
 
Nogmaals dank

Hopelijk heb ik het nu goed gedaan wat de code tags betreft.
Wat seniorenweb betreft, begrijp ik nu uit uw antwoord dat je hier alleen maar als werkende en niet als gepensioneerde mag zijn?
Uw antwoord was toereikend, stom dat ik me dat niet realiseerde. Hoop dat ik toch op dit forum 'mag' blijven om vragen te stellen.

Ik probeer me te verdiepen in VBA en heel soms (dit was de eerste vraag) zie ik iets stoms over het hoofd zoals nu. Inmiddels heb ik een volledige analyse in Excel voor scholen gebouwd. Geen commercieel doel.
Hopelijk kan ik nog steeds hier ondersteuning krijgen. Ik zag dat u een zeer ervaren senior programmeur bent op dit forum en bij mij kon u zien dat ik nieuw ben op dit forum. Nogmaals dank voor uw korte aanwijzing
 
De reactie van snb is wellicht verkeerd op te pakken maar dat hoeft helemaal niet.
snb doelt in dit geval op de website "seniorweb.nl".
Dat is , in woorden van de website zelf, een hulp site " voor iedereen: beginners en meer ervaren computergebruikers"

Overigens is iedereen welkom op het forum! Voor u dan ook nog een verlaat welkom :)

Prettige dag allemaal :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan