Avatar billede tvc Seniormester
10. oktober 2016 - 21:48 Der er 9 kommentarer og
1 løsning

VBA - Undersøg om der er sket ændringer til arket og hvis der er aktiv makro

Hej

Jeg søger en kommando i Excel VBA, der kan undersøge, om der er sket ændringer til det aktive ark og ved deaktivering køre en makro.

1. UNdersøg om der er sket ændringer til det aktive ark (STAM)
2. Hvis der er sket ændringer til arket (STAM) aktivers makro (ved deaktivering af ark).
Avatar billede kabbak Professor
10. oktober 2016 - 22:09 #1
I arkets modul


Dim Endring As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
Endring = True
End Sub

Private Sub Worksheet_Deactivate()
    If Endring Then
        svar = MsgBox(" Arket er ændret, vil du gemme", vbYesNo)
        If svar = vbYes Then ActiveWorkbook.Save
    End If
End Sub
Avatar billede tvc Seniormester
10. oktober 2016 - 22:25 #2
Hej kabbak

Dejlig enkelt løsning - jeg kan dog ikke få den til at virke (har indsat et = TRUE). Måske kan den ikke finde Endrings variablen i den nederste funktion?

Dim Endring As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    Endring = True
End Sub

Private Sub Worksheet_Deactivate()
    If Endring = True Then
        svar = MsgBox(" Arket er ændret, vil du gemme", vbYesNo)
        If svar = vbYes Then ActiveWorkbook.Save
    End If
End Sub
Avatar billede kabbak Professor
11. oktober 2016 - 12:16 #3
Har du sat koden i arket STAM 's modul,  der skal det være og ikke i andre moduler.
Avatar billede tvc Seniormester
14. oktober 2016 - 00:15 #4
Ja den er indsat i STAM arket, men den stopper.
Avatar billede store-morten Ekspert
14. oktober 2016 - 05:20 #5
Er det en indtastning eller en makro der ændre i STAM arket?

Tror ikke 'Endring* bliver TRUE ved en makro.
Avatar billede tvc Seniormester
14. oktober 2016 - 09:56 #6
Det er en indtastning i arket (ikke en makro)
Avatar billede store-morten Ekspert
14. oktober 2016 - 21:09 #7
Prøv denne test:

Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Arket er ændret" '<--test
    Endring = True
End Sub

Private Sub Worksheet_Deactivate()
    If Endring = True Then
        svar = MsgBox(" Arket er ændret, vil du gemme", vbYesNo)
        If svar = vbYes Then ActiveWorkbook.Save
    End If
End Sub
Avatar billede tvc Seniormester
18. oktober 2016 - 23:34 #8
Har ikke haft tid til at prøve den endnu - gør det inden weekenden
Avatar billede tvc Seniormester
23. oktober 2016 - 16:50 #9
Super det virker :-)
Avatar billede store-morten Ekspert
23. oktober 2016 - 18:05 #10
Virker ? Hvordan ?

Har jo kun tilføjet en test, der kalder en boks, hver gang der ændres i arket.

Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Arket er ændret" '<--test
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester