Avatar billede jetk Nybegynder
05. november 2008 - 11:28 Der er 27 kommentarer og
1 løsning

VBA, Tjek om specifik celle er valgt

Hvordan tjekker jeg, med VBA, om en specifik celle er blevet valgt / aktiveret, der kører en Worksheet_SelectionChange handler, så .select skal helst undgås.

På forhånd tak

Venlig hilsen Jens
Avatar billede excelent Ekspert
05. november 2008 - 15:17 #1
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
Avatar billede jetk Nybegynder
05. november 2008 - 22:08 #2
Tak for hjælpen, excelent.

Det er første gang jeg bruger siden,
hvordan giver jeg dig point?

Mvh Jens
Avatar billede excelent Ekspert
05. november 2008 - 22:21 #3
marker box med navn og klik accepter
Avatar billede jetk Nybegynder
08. november 2008 - 15:44 #4
Hej Excelent.

Jeg har nu prøvet koden:

Sub SletIndtastninger()

    If Intersect(Target, Sheets("Forside").Range("C6")) Is Nothing Then Exit Sub
       
        Range("C11:G12,B15:H15,A17:H18,C20:G22").Value = """"
   
   
    If Intersect(Target, Sheets("Forside").Range("C11")) Is Nothing Then Exit Sub
     
        Range("B15:H15,A17:H18,C20:G22").Value = """"
   
   
    If Intersect(Target, Sheets("Forside").Range("B15")) Is Nothing Then Exit Sub
     
        Range("A17:H18,C20:G22").Value = """"
   
   
    If Intersect(Target, Sheets("Forside").Range("A17")) Is Nothing Then Exit Sub
     
        Range("C20:G22").Value = """"
   
End Sub

Desværre får jeg en runtime424 error object required

Kan du hjælpe?

Mvh Jens
Avatar billede excelent Ekspert
08. november 2008 - 16:07 #5
Nej Target virker i en hændelses makro - troede det var det du mente

Skal "C11:G12,B15:H15,A17:H18,C20:G22" slettes når C6 er tom osv ?
Avatar billede jetk Nybegynder
08. november 2008 - 16:30 #6
Nej De valgte ranges skal slettes når C6, C11 o.s.v. vælges (klikkes på)
Avatar billede jetk Nybegynder
08. november 2008 - 16:35 #7
Det er nogle hierakiske dynamiske lister, og for at undgå fejltagelser
skal tidligere valgte undeliggende listeværdier slettes
når en ny listeværdi i en oveliggende liste vælges.

Giver det mening?
Avatar billede excelent Ekspert
08. november 2008 - 16:51 #8
Indsæt denne i ark Forside's kodemodul

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("C6,C11,B15, A17")) Is Nothing Then Exit Sub
If Target.Address = "$C$6" Then Range("C11:G12,B15:H15,A17:H18,C20:G22") = ""
If Target.Address = "$C$11" Then Range("B15:H15,A17:H18,C20:G22") = ""
If Target.Address = "$B$15" Then Range("A17:H18,C20:G22") = ""
If Target.Address = "$A$17" Then Range("C20:G22") = ""
End Sub
Avatar billede jetk Nybegynder
08. november 2008 - 17:09 #9
Når jeg åbner workbooken får jeg denne fejl:

Compile error: ambiguous name detected: Worksheet_SelectionChange
Avatar billede excelent Ekspert
08. november 2008 - 17:13 #10
har du 1 i forvejen ?
Avatar billede jetk Nybegynder
08. november 2008 - 17:17 #11
Hvad mener du med 1, en værdi i C6? Det er der ikke når WB åbner, der kører en rutine der sletter værdier fra sidst WB blev lukket.
Avatar billede jetk Nybegynder
08. november 2008 - 17:19 #12
Jeg har ændret sub-navnet og kalder den fra "Forside", nu får jeg igen

runtime error 424 i første "IF"-sætning

Sub SletNyeIndtastninger()

    If Intersect(Target, Range("C6,C11,B15, A17")) Is Nothing Then Exit Sub
    If Target.Address = "$C$6" Then Range("C11:G12,B15:H15,A17:H18,C20:G22") = ""
    If Target.Address = "$C$11" Then Range("B15:H15,A17:H18,C20:G22") = ""
    If Target.Address = "$B$15" Then Range("A17:H18,C20:G22") = ""
    If Target.Address = "$A$17" Then Range("C20:G22") = ""
   
End Sub
Avatar billede jetk Nybegynder
08. november 2008 - 17:39 #13
Hvis du mener Worksheet_SelectionChange, ja så bruger jeg den handle i forvejen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    FjernOverskrift
   
    DependentLists
   
    LookupFunktioner
   
    SletNyeIndtastninger

End Sub
Avatar billede excelent Ekspert
08. november 2008 - 18:16 #14
ja jeg mener Worksheet_SelectionChange
kan den samme anvendes til min kode ?
for eller køres koden ikke når du selecter c6,c11 osv
Avatar billede jetk Nybegynder
08. november 2008 - 18:38 #15
Ja din kode kan køres med den handle, men som sagt, jeg får en
runtime error 424 object required fejl, når jeg kører subrutinen "SletNyeIndtastniger"
Avatar billede excelent Ekspert
08. november 2008 - 18:46 #16
nej jeg mener om min kode kan indsættes i din
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Avatar billede jetk Nybegynder
08. november 2008 - 19:04 #17
Nu er jeg med, Ja koden kører fint i
Private Sub Worksheet_SelectionChange(ByVal Target As Range),
men den sletter ikke værdierne
Avatar billede jetk Nybegynder
08. november 2008 - 19:16 #18
Nu ser det således ud, er det det du mener?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    FjernOverskrift
   
    If Intersect(Target, Range("C6,C11,B15, A17")) Is Nothing Then Exit Sub
    If Target.Address = "$C$6" Then Range("C11:G12,B15:H15,A17:H18,C20:G22") = ""
    If Target.Address = "$C$11" Then Range("B15:H15,A17:H18,C20:G22") = ""
    If Target.Address = "$B$15" Then Range("A17:H18,C20:G22") = ""
    If Target.Address = "$A$17" Then Range("C20:G22") = ""
   
    DependentLists
   
    LookupFunktioner

End Sub

Det kører uden bugs, men værdierne bliver ikke fjernet
Avatar billede excelent Ekspert
08. november 2008 - 19:19 #19
er det ikke i samme ark der skal slettes som hvor der testes for hvilken celle der er valgt ?
Avatar billede jetk Nybegynder
08. november 2008 - 19:21 #20
Jo
Avatar billede excelent Ekspert
08. november 2008 - 19:30 #21
hvis du markerer celle C6 så slettes Range"C11:G12,B15:H15,A17:H18,C20:G22"

hvis ikke så gå lige ind i kodemodulet og luk det igen ved kryds oppr i højre hjørne, og klik ok
Avatar billede jetk Nybegynder
08. november 2008 - 19:33 #22
Det hjælper desværre heller ikke,
kan jeg sende dig WB?
Avatar billede excelent Ekspert
08. november 2008 - 19:34 #23
ja det må du gerne
pm@madsen.tdcadsl.dk
Avatar billede jetk Nybegynder
08. november 2008 - 19:44 #24
post på vej
Avatar billede excelent Ekspert
08. november 2008 - 20:13 #25
prøv:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    FjernOverskrift
   
    If Intersect(Target, Range("$C$6,C11,B15, A17")) Is Nothing Then Exit Sub

    If Target.Address = "$C$6:$G$8" Then Range("C11:G12,B15:H15,A17:H18,C20:G22") = ""
   
    If Target.Address = "$C$11:$G$12" Then Range("B15:H15,A17:H18,C20:G22") = ""
 
    If Target.Address = "$B$15:$H$15" Then Range("A17:H18,C20:G22") = ""
 
    If Target.Address = "$A$17:$I$18" Then Range("C20:G22") = ""
   
    DependentLists
   
    LookupFunktioner

End Sub
Avatar billede jetk Nybegynder
08. november 2008 - 20:45 #26
Nu fungerer det fint.
Tusind tak for hjælpen.
Hvor lå fejlen?
Mvh Jens
Avatar billede excelent Ekspert
08. november 2008 - 21:08 #27
Du havde flettede celler, så er target ikke en enkelt celle, men flere
Avatar billede jetk Nybegynder
08. november 2008 - 21:13 #28
OK, det er en god ting at huske

Mvh Jens
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