Gå til innhold

[Løst]Excel - Lage knapp


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet (endret)

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
Skrevet

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".

Skrevet

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

Skrevet

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.

Skrevet

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. :)

Skrevet

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

Skrevet (endret)

*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
Skrevet

Formelen i celle E9 må referere til samme raden. I ditt tilfelle skal formelen i E9 se slik ut:

 

=IF(C9=0;" ";IF(C9=D9;"Rett";"Galt"))

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å
×
×
  • Opprett ny...