Avatar billede brilleabe Nybegynder
08. juli 2004 - 22:41 Der er 23 kommentarer og
1 løsning

Udfør handling når celle vælges

Er det muligt at aktivere en macro når en celle vælgels - ikke hvis den ændres - den skal bare markeres ?

Valget kan foregå med musen eller bare vha piletasterne.
Avatar billede kabbak Professor
08. juli 2004 - 22:56 #1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B2")) Is Nothing Then
MsgBox "  du er nu i celle B2"
'kode
End If

End Sub

denne virker når celle B2 makeres

skal være i arkmodulet for det ark den skal virke på.

Højreklik på arkfanen, vælg vis programkode
Avatar billede brilleabe Nybegynder
08. juli 2004 - 23:07 #2
Jeg tror lige det er det jeg er ude efter. Jeg tester lige i morgen, så vender jeg tilbage.
Avatar billede kabbak Professor
08. juli 2004 - 23:09 #3
ok
Avatar billede brilleabe Nybegynder
10. juli 2004 - 16:17 #4
Det virker bare ! Smid et svar så er der point på vej.
(jeg har ca 100 celler og det er 'lidt' langsomt - er der en hurtigere måde at gøre det på ?)
Avatar billede kabbak Professor
10. juli 2004 - 22:11 #5
Lidt langsom, hvad mener du. ?
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:12 #6
det tager ca. 1½ sec for at makroen køre (den er meget simpel - den skriver en værdi i en celle)
Avatar billede kabbak Professor
10. juli 2004 - 22:14 #7
må jeg se koden. ?
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:16 #8
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("o2")) Is Nothing Then
R = ActiveCell.Row
    Application.ScreenUpdating = False
    Range("n3").Select
    ActiveCell.FormulaR1C1 = R
    Cells(R, "o").Select
End If
If Not Intersect(Target, Range("o3")) Is Nothing Then
R = ActiveCell.Row
    Application.ScreenUpdating = False
    Range("n3").Select
    ActiveCell.FormulaR1C1 = R
    Cells(R, "o").Select
End If

osv osv. Der er 93 celler som kan vælges
Avatar billede kabbak Professor
10. juli 2004 - 22:24 #9
If Not Intersect(Target, Range("o2:o94")) Is Nothing Then
R = ActiveCell.Row
    Application.ScreenUpdating = False
    Range("n3").FormulaR1C1 = R
    Cells(R, "o").Select
End If

kan den ikke bruges, gælder for alle i kolonne O række 2 til 94
Avatar billede kabbak Professor
10. juli 2004 - 22:29 #10
nææ, den skal se sådan ud

If Not Intersect(Target, Range("o2:o94")) Is Nothing Then
R = ActiveCell.Row
    Range("n3").FormulaR1C1 = R
End If
Avatar billede kabbak Professor
10. juli 2004 - 22:30 #11
dit problem er denne linie.

  Cells(R, "o").Select
den vælger din celle igen, og så køres koden igen, i ovenstående undgås dette
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:31 #12
Det kan du tro den kan. Den tager lige toppen af tiden - men det tager stadig ca 1 sec. (og udover det så er det sgu' rart at få barberet sine 558 linier ned til 6 - lol)
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:32 #13
havde ikke set den 'nye' kode. Tester lige...
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:34 #14
Nu er den bare super hurtig. Men jeg vil gerne have at cellen bliver valgt igen (så at man bare kan bruge pil ned/op for at komme videre, men har jeg forstået det rigtigt hvis det er det som tager tid ?)
Avatar billede kabbak Professor
10. juli 2004 - 22:35 #15
cellen er stadig valgt, den flyttes ikke
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:35 #16
...og hvordan kan det være at det kan 'belaste' så meget at vælge en enkelt celle
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:37 #17
Den flyttes desværre hos mig. Når der redigeres i n3 opdateres en graf med dynamiske navne.
Avatar billede kabbak Professor
10. juli 2004 - 22:38 #18
hver gang du selcter o = kolonnen udføres koden, så når du bruger linien,  Cells(R, "o").Select, kører den koden igen, så den kører i ring.
Avatar billede kabbak Professor
10. juli 2004 - 22:39 #19
er der en kode på N3,hvis der er det, vil jeg gerne se den. ?
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:39 #20
vil det sig at når jeg skriver 'Cells(R, "o").Select' køres koden igen ? Hvordan kan den så stoppe ? og hvorfor crasher den så ikke.
Avatar billede kabbak Professor
10. juli 2004 - 22:46 #21
den stopper selv efter et antal gange, hvis du havde fjernet,  Application.ScreenUpdating = False, kunne du se det.

prøv denne

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("o2:o94")) Is Nothing Then
    R = ActiveCell.Row
    Application.ScreenUpdating = False
    Range("n3").FormulaR1C1 = R
   
  Application.EnableEvents = False ' stopper automatiske makroer i at blive udført
    Cells(R, "o").Select
  Application.EnableEvents = True ' giver dem lov igen
End If

End Sub
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:50 #22
Det er simpelthen bare i orden. Point og tak herfra !
Avatar billede kabbak Professor
10. juli 2004 - 22:51 #23
selv tak ;-))
Avatar billede brilleabe Nybegynder
10. juli 2004 - 22:56 #24
det er fedt stadig at kunne lære lidt hverdag.
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