Avatar billede dino84 Nybegynder
14. februar 2007 - 02:17 Der er 4 kommentarer og
1 løsning

Ved redigering i område, fremkald msgbox

Er det muligt at lave en makro der "holder øje" med et område for redigering?

Hvis jeg f.eks har sat HG10:IV80 som område, hvis en person så laver nogle ændringer i dette område skal der komme en msgbox frem der spørg om man vil fortsætte.
Avatar billede excelent Ekspert
14. februar 2007 - 15:37 #1
Højreklik på din Arkfane,- Vælg 'Vis programkode' indsæt fælgende

Dim OldValue

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("HG10:IV80")) Is Nothing Then Exit Sub
If OldValue = "" Then Exit Sub
If OldValue <> Target.Value Then
If MsgBox("Skal cellen ændres ? ", vbYesNo) <> vbYes Then Target = OldValue
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    OldValue = ActiveCell.Value
End Sub
Avatar billede dino84 Nybegynder
15. februar 2007 - 01:34 #2
Jeg har ændret den til dette

Dim OldValue

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("HG10:IV80")) Is Nothing Then Exit Sub
If OldValue = "" Then Exit Sub
If OldValue <> Target.Value Then
svar = MsgBox("Skal cellen ændres ? ", vbYesNo)
If svar = vbYes Then Target = OldValue
If svar = vbNo Then Application.Undo
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    OldValue = ActiveCell.Value
End Sub

Der er dog lidt problemer når jeg forsøger at ændre i en celle. Når jeg skriver noget nyt i cellen og trykker ja så kommer den ny indtastning ikke i cellen, men den gamle.

Hvis det har noget at sige så er der også tomme celler i området.

En lille ting mere.. Er det muligt at tilføje, at hvis der bliver ændret farve i en celle eller nogen anden form for ændring så kommer denne msgbox frem?
Avatar billede excelent Ekspert
15. februar 2007 - 08:02 #3
Dim OldValue

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("HG10:IV80")) Is Nothing Then Exit Sub
'If OldValue = "" Then Exit Sub
If OldValue <> Target.Value Then
If MsgBox("Skal cellen ændres ? ", vbYesNo) <> vbYes Then Target = OldValue
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    OldValue = ActiveCell.Value
End Sub

så tester der også på tomme seller

med farver eller andet godt ved jeg ikke umiddelbart
Der er ingen event's som trikker på formatering, så
der skal andre boller på suppen. det har jeg ikke experimenteret med.
Avatar billede dino84 Nybegynder
15. februar 2007 - 09:55 #4
Jeg fik det til at virke ved at bytte om på Target og OldValue i If MsgBox("Skal cellen ændres ? ", vbYesNo) <> vbYes Then Target = OldValue

Mht. farverne dropper jeg det bare, lyder til at være for indviklet =)

Kom med et svar så du kan få points..
Avatar billede excelent Ekspert
15. februar 2007 - 10:08 #5
ok
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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