Avatar billede KurtOA Praktikant
06. december 2012 - 22:14 Der er 6 kommentarer og
1 løsning

Function / Vba der KUN skal udføres ved ændring i bestemt celle ( eller cellerange)

Jeg har brug for en funktion der på baggrund af bestemte celler reagerer hvis der bliver ændret i dem.

Jeg har fundet nedenstående - men den "aktiveres" hver gang man stiller sig i cellen. Også selvom cellens indhold/værdi IKKE ændres. 

Kan man ændre den så den kun "udføres" når det egentlige indhold ændres? Altså hvis indhold fx vha en dropboks med datavalidering ændres fra "JA" til "NEJ"?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("A1")) Is Nothing Then
MsgBox "OK"
End If

End Sub

mvh Kurt OA
Avatar billede store-morten Ekspert
06. december 2012 - 23:00 #1
Prøv:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Target.Value = "ja" Then MsgBox "ja"
If Target.Value = "nej" Then MsgBox "nej"
End If
End Sub
Avatar billede natkatten Mester
07. december 2012 - 00:03 #2
Eller måske denne:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("A1")) Is Nothing Then
MsgBox "Du har valgt at svare " & Range("A1")
End If
Application.EnableEvents = True
End Sub
Avatar billede natkatten Mester
07. december 2012 - 00:10 #3
Glem indlægget - den viser jo f.eks. 'Ja', hvis svaret vælges igen.
Avatar billede KurtOA Praktikant
07. december 2012 - 08:25 #4
Beklager hvsi min MSGbox forstyrrede forståelsen.
Den skulle blot illustrere at der skulle "ske noget" HVIS celleindholdet bliver ændret.

Jeg har en anden funktion der skal udføres hvis cellen ændres - men KUN hvis selve celleinholdet ændres - den skal IKKE udføres hvis cellen blot aktiveres.

mvh Kurt



Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("A1")) Is Nothing Then
' en anden sub udføres
End If

End Sub
Avatar billede store-morten Ekspert
07. december 2012 - 08:56 #5
Se #1

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then

' en anden sub udføres

End If
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range) rettet til:
Private Sub Worksheet_Change(ByVal Target As Range)
Avatar billede KurtOA Praktikant
08. december 2012 - 09:08 #6
Tak store-morten
Det løste lige nøjagtigt mit problem.

Læg et svar så får du dine velfortjente point ;-)

mvh Kurt
Avatar billede store-morten Ekspert
08. december 2012 - 11:13 #7
Velbekomme.
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