Gå til innhold

[Løst]Excel - Lage knapp


Anbefalte innlegg

Hei. :)

 

Spurte her uten å få særlig respons. Ble anbefalt å poste her siden dere har mer peiling på slikt (?).

 

Allefall, mitt spørsmål er som følger. :)

Driver å lager ett glose-øve-program med excel og har bruk for litt hjelp.

Jeg bruker hvis-funksjonen til å hente det rette ordet fra en skjult kolonne.

Det jeg nå vil gjøre, er å lage en knapp som skjuler\viser kolona når jeg trykker på den. Er dette mulig å få til?

 

Takker for svar! :)

Endret av Knut Erik
Lenke til kommentar
Videoannonse
Annonse

Ved hjelp av verktøylinjen "Kontrollverktøykassen" setter du inn en "kommandoknapp" i regnearket. Dobbelklikk på denne for å vise koden for knappen (alt. høyreklikk på og velg "Vis kode"). Mellom Privat Sub og End Sub skriver du inn følgende

 

Worksheets("Ark1").Columns("E").Hidden = False

 

Hvor "Ark1" er navnet på arket, og "E" navnet på kolonnen.

 

Hvis du ønsker at knappen skal veksle mellom skjult og synlig skriver du

 

If Worksheets("Ark1").Columns("E").Hidden = True Then
Worksheets("Ark1").Columns("E").Hidden = False
Else
Worksheets("Ark1").Columns("E").Hidden = True
End If

 

Husk at makroer må være aktivert for at dette skal virke (Verktøy->Makroer->Sikkerhet = "Middels" eller "Lav")

Endret av pumpy
Lenke til kommentar

For en serie med kolonner

Worksheets("Ark1").Columns("E:G").Hidden = True

Som skjuler kolonne "E" til og med "G".

 

En annen måte å skjule kolonnene på er med å bruke "range" objektet i stedet.

Range("D:D,I:K,M:M").Select
Selection.EntireColumn.Hidden = True

Dette skjuler kolonne "D", "I" - "K" og "M".

Lenke til kommentar

Takk takk igjen. :)

Må si du har god peiling på dette. :) Setter virkelig pris på hjelpa jeg får!

 

Har en liten sak til som er litt tricky.

Jeg tenker å få til noe slikt som dette.

 

Du skriver inn antall ord du skal øve på i ei celle. Foreks 10.

Da ordner modellen 10 celler ned med nr og kant rundt cellene.

Noe slikt som jeg viser på vedlagt bilde.

 

Er dette mulig å få til? :)

Slik.JPG

Lenke til kommentar

Du kan bruke "Worksheet_SelectionChange" for å sjekke om en verdi forandrer seg i en bestemt celle.

 

Koden under vil først sjekke om verdien i celle C2 har forandret seg og hvis så er tilfelle tegne opp tabellen på nytt med utgangspunkt i den nye verdien.

 

Lim inn koden foran eller etter "CommandButton1_Click()" funksjonen

 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Bruker variabelen "verdi" for å sjekke om innholdet har endret seg i celle C2
Static verdi

'Lag ny tabell hvis C2 har forandret verdi
If verdi <> Range("C2").Value Then
   antall_gloser = Range("C2").Value

   verdi = antall_gloser

   'Slett radene 11 til 200
   Worksheets("Ark1").Rows("11:200").Delete

   'Fyll inn nr
   For radnr = 1 To antall_gloser
   Range("A10").Offset(radnr, 0).Value = radnr
   Next radnr
   
   'Finn adressen til siste cellen i tabellen, siste rad og siste kolonne
   sistecelle = Range("A10").Offset(antall_gloser, 6).Address
   
   'Merk området som skal ha kantlinjer
   Range("A11:" & sistecelle).Select
   
   'Opprett kantlinjer for området
   With Selection
   .Borders.Weight = xlThin
   End With
   
   'Flytt merking til celle C2
   Range("C2").Select

End If

End Sub

 

Koden forutsetter at regnearket er bygd opp som på det bildet du la med.

Lenke til kommentar

Kjempegreier :)

Tusen takk for all hjelp! :)

Det er bare ett lite problem igjen.

 

Cellene rett/galt blir også slettet når du endrer verdien for antall gloser.

Den cella inneholder en hvisfunksjon som sjekker om fasitcella er lik glosecella. Er det mulig å ordne det slik at den cella _ikke_ blir sletta? =)

 

Takker igjen for mye god hjelp. :)

Lenke til kommentar

Denne koden forutsetter at formelen for kolonne E (Rett/Galt) ligger i E9. Innholdet her kopieres så til cellene i kolonne F i tabellen. Erstatt tidligere kode med denne!

 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Bruker variabelen "verdi" for å sjekke om innholdet har endret seg i celle C2
Static verdi

'Lag ny tabell hvis C2 har forandret verdi
If verdi <> Range("C2").Value Then
   antall_gloser = Range("C2").Value

   verdi = antall_gloser

   'Slett radene 11 til 200
   Worksheets("Ark1").Rows("11:200").Delete

   'Fyll inn nr
   For radnr = 1 To antall_gloser
   Range("A10").Offset(radnr, 0).Value = radnr
   Next radnr
   
   'Finn adressen til siste cellen i tabellen, siste rad og siste kolonne
   sistecelle = Range("A10").Offset(antall_gloser, 4).Address
   
   'Kopiere formelen fra E9 til Rett/Galt kolonnen i tabellen
   Range("E9").Select
   Selection.Copy
   Range("E11:" & sistecelle).Select
   ActiveSheet.Paste
   
   'Merk området som skal ha kantlinjer
   Range("A11:" & sistecelle).Select
   
   'Opprett kantlinjer for området
   With Selection
   .Borders.Weight = xlThin
   End With
   
   'Flytt merking til celle C2
   Range("C2").Select

End If

End Sub

Lenke til kommentar

*edit edit*

 

Ser ut til å virke, men har ett problem til her...

Formelen jeg bruker til å sjekke er følgende:

=IF(C11=0;" ";IF(C11=D11;"Rett";"Galt"))

 

Når denne blir kopiert, får jeg bare mange #REF feil :hmm:

 

Noen måte å komme rundt dette på? :)

 

 

Takker igjen for at du tar deg tid til å hjelpe meg. :)

Endret av Knut Erik
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...