Avatar billede Falentin Seniormester
09. oktober 2018 - 13:27 Der er 6 kommentarer og
1 løsning

Overfør text fra celle ved siden af Checkbox i Excel

Jeg har et nedenstående kode, som flytter text fra cellen ved siden af Checkboxen til et andet ark i regnarket. Der virker nogenlunde, men hvis jeg fjerner krydser opdatterer den ikke.

Jeg har cirka 85 checkboxe, så måske der er en nemmere måde at gøre det på, i stedet for at lave 85 af dem?

Koden ser således ud:

Private Sub CheckBox8_Click()
If CheckBox8.Value = True Then Sheets("Skabelon").Range("D30").End(xlUp).Offset(1, 0).Value = Sheets("Færdigheds&Vidensmål").Range("M7").Value
If CheckBox8.Value = True Then Sheets("Skabelon").Range("E30").End(xlUp).Offset(1, 0).Value = "SAND"
If CheckBox8.Value = True Then Sheets("Skabelon").Range("F30").End(xlUp).Offset(1, 0).Value = "Læsning"
If CheckBox8.Value = False Then Sheets("Skabelon").Range("D30").End(xlUp).Offset(1, 0).Value = ""
If CheckBox8.Value = False Then Sheets("Skabelon").Range("E30").End(xlUp).Offset(1, 0).Value = ""
If CheckBox8.Value = False Then Sheets("Skabelon").Range("F30").End(xlUp).Offset(1, 0).Value = ""

Men umiddelbart må der være en nemmere måde at gøre det på. Evt et script der ser på
Avatar billede Max_P_Larsen Seniormester
09. oktober 2018 - 14:05 #1
Grunden til, at den ikke opdaterer, når du fjerner markeringen i tjekboksen, er, at End(xlUp).Offset(1, 0) er forskellig ved klik nummer 2 i forhold til klik nummer 1. Helt nøjagtigt én række forskellig fra.
Lad os sige, at det første klik finder række 10 i kolonne D. Denne udfylder du med værdien fra Sheets("Færdigheds&Vidensmål").Range("M7").Value.
Ved klik nummer 2 finder End(xlUp).Offset(1, 0) så række nummer 11, fordi række nummer 10.Offset(1, 0) er cellen D11.
Så jo, den sletter - men den sletter bare linjen under det, der ved første klik er blevet udfyldt.
Din kode for at slette skal derfor ikke forskyde med en række.

Private Sub CheckBox8_Click()
   
    With Sheets("Skabelon")
   
        If CheckBox8.Value = True Then
               
            .Range("D30").End(xlUp).Offset(1, 0).Value = Sheets("Færdigheds&Vidensmål").Range("M7").Value
            .Range("E30").End(xlUp).Offset(1, 0).Value = "SAND"
            .Range("F30").End(xlUp).Offset(1, 0).Value = "Læsning"
           
        Else
       
            .Range("D30").End(xlUp).Resize(1, 3).Value = ""
       
        End If
   
    End With

End Sub
Avatar billede Falentin Seniormester
09. oktober 2018 - 14:27 #2
Det er superfedt:-)

Et lille tillægsspørgsmål, kan man lave noget med at bruge offset, så man ikke behøver at finde hvert rækkenummer og kollone bogstav?

Checkboxen står lige ved siden af cellen, dvs:


CheckBox      Celle med tekst
Avatar billede Max_P_Larsen Seniormester
09. oktober 2018 - 14:46 #3
Mener du, om man kan identificere rækkenummeret og kolonnebogstavet ud fra check-boksens placering?
Avatar billede Falentin Seniormester
09. oktober 2018 - 14:48 #4
Præcis:-)
Avatar billede Max_P_Larsen Seniormester
09. oktober 2018 - 14:54 #5
Jeg tror umiddelbart, det bliver svært. Check-boksens placering er defineret ved en Left- og en Top-position, der ikke afslører noget om "nærmeste rækkenummer". Derudover er størrelsen defineret ved Height og Width, så den figur eller "Shape", der indeholder check-boksen, kan også risikere at overlappe flere celler.

Hvis jeg kendte dit ark og arbejdsgangen bedre, ville jeg sandsynligvis kunne komme med et forslag til noget smart.
Avatar billede Falentin Seniormester
09. oktober 2018 - 15:02 #6
Du har også hjulpet mig rigtig meget:-) Og jeg kan ikke se, at jeg kan uploade noget her på siden?

Så super mange tak herfra:-)
Avatar billede Max_P_Larsen Seniormester
09. oktober 2018 - 15:09 #7
Ellers kan du prøve at uploade i dette forum, hvor jeg også indimellem er aktiv:

https://forum.excel-regneark.dk/forums.html
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

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