HaKj Skrevet 6. juni 2011 Del Skrevet 6. juni 2011 Hei Jeg har en forside i excel, hvor jeg har en liste som viser ca 10 ark som ligger etter denne forsiden i regnearket mitt. Jeg har satt en avkrysningsboks etter hvert punkt på listen. Det jeg ønsker å få til er følgende: Hvis jeg merker f.eks. ark 2 og 5 på listen, og trykker skriv ut, så ønsker jeg at forsiden pluss ark 2 og 5 blir skrevet ut. Aller helst ønsker jeg at det blir laget en pdf som inneholder disse 3 arkene. For å dele opp spørsmålet mitt litt, så trenger jeg hjelp til følgende: Jeg trenger en prosedyre som sjekker hvilke avkrysningsbokser som er merket, som så merker de tilsvarende arkene. Utskriftsdelen av denne prosedyren, mener jeg at jeg skal klare å lage selv, men det er å komme dit hvor de rette arkene er merket som er problemet mitt. Kan noen hjelpe med det? Hilsen Harald Lenke til kommentar
Harald Staff Skrevet 6. juni 2011 Del Skrevet 6. juni 2011 Hei Harald Antatt at du har brukt Checkbox'er fra Skjemaverktøyene (Forms), ikke Kontrollverktøyene (ActiveX), at det ikke andre uvedkommende checkbox'er på forsiden, og at det ikke er skjulte ark i filen: Sub Klikk() Dim Kryssa() As Boolean Dim i As Long ReDim Kryssa(1 To Sheets(1).CheckBoxes.Count) 'Les inn verdiene: For i = 1 To Sheets(1).CheckBoxes.Count If Sheets(1).CheckBoxes(i).Value = 1 Then Kryssa(i) = True Next 'Gjør noe med dem, f.eks For i = 1 To Sheets(1).CheckBoxes.Count If Kryssa(i) = True Then MsgBox Sheets(i).Name Next End Sub HTH. Beste hilsen Harald Lenke til kommentar
HaKj Skrevet 6. juni 2011 Forfatter Del Skrevet 6. juni 2011 Hei Takker for hjelpen. Det er et problem i koden. Den teller riktig antall checkboxer, men det ser ut til at den teller med forsiden, når den teller arkene. I hvertfall viste den navnene på arkene som var et hakk etter de jeg merket. Er det enkelt å fikse? Et annet spørsmål: Ser at du har gjort det slik at den viser navnet på de merkede arkene i en msgbox, jeg prøvde å bytte til "select" i stedet for "name", men det da ble arket aktivert. Er det en annen kommando som bare merker arket, men ikke aktiverer det? Evnt. vet koden hvilke ark som skal merkes? Hilsen Harald Lenke til kommentar
HaKj Skrevet 6. juni 2011 Forfatter Del Skrevet 6. juni 2011 Jeg endret name-linja til følgende: If Kryssa(i) = True Then Sheets(i).Select Det funket ikke. Lenke til kommentar
Harald Staff Skrevet 6. juni 2011 Del Skrevet 6. juni 2011 Når du ber om hjelp til deler av et problem så følger det med litt lekser Ja det er bare å legge på 1, så er du en høyere. Resten fikser du: Sub Klikk() Dim V() As Long Dim i As Long, j As Long j = -1 For i = 1 To Sheets(1).CheckBoxes.Count If Sheets(1).CheckBoxes(i).Value = 1 Then j = j + 1 If i < ThisWorkbook.Sheets.Count Then ReDim Preserve V(0 To j) V(j) = i + 1 End If End If Next Sheets(V()).PrintPreview End Sub Lenke til kommentar
HaKj Skrevet 7. juni 2011 Forfatter Del Skrevet 7. juni 2011 Hei Funker i utgangspunktet veldig bra, bortsett fra at jeg ikke får med forsida i utskriften. Kunne du hjulpet med det også? En annen ting: Den koden som heter ReDim Preserve var ny for meg, hva er det den gjør? Hilsen Harald Lenke til kommentar
Harald Staff Skrevet 7. juni 2011 Del Skrevet 7. juni 2011 Redim Preserve endrer størrelse på en array samtidig som den beholder verdiene som er der. Hjelp til selvhjelp: Du ønsker at V(0) skal være 1 (for ark 1) før du begynner å lese av checkboxene. Da må også j starte på 0 istedetfor -1. HTH. Beste hilsen Harald Lenke til kommentar
HaKj Skrevet 7. juni 2011 Forfatter Del Skrevet 7. juni 2011 Ja, jeg får til å endre j til 0, men hvordan kan jeg få den til å endre v(0) fra 0 til 1 Jeg forstår det slik at den lagrer de jeg har hukket av i checkboxene som en verdi som heter V(1), V(2) osv. Det funker for de arkene som er variable. Når det gjelder forsiden så har jeg ikke noen checkbox til den, fordi den skal alltid være med. Beklager men jeg faller litt ut her... Det er nok et litt høyt nivå for meg. Hilsen Harald Lenke til kommentar
HaKj Skrevet 7. juni 2011 Forfatter Del Skrevet 7. juni 2011 Hei Nå fikk jeg det jammen meg til. Jeg tok bare bort den + 1 fra V(j). Takker for hjelpen. Lenke til kommentar
HaKj Skrevet 7. juni 2011 Forfatter Del Skrevet 7. juni 2011 Der var jeg visst litt rask.... Det funket ikke. Lenke til kommentar
Harald Staff Skrevet 7. juni 2011 Del Skrevet 7. juni 2011 Dim i As Long, j As Long j = 0 ReDim Preserve V(0 To j) V(j) = 1 For i = 1 To Sheets(1).CheckBoxes.Count 'resten som tidligere Lenke til kommentar
HaKj Skrevet 7. juni 2011 Forfatter Del Skrevet 7. juni 2011 Dette funket akkurat slik jeg tenkte. Tusen takk for hjelpen. Nå skal jeg begynne på utskriftsdelen. Satser på at jeg klarer den selv. Hilsen Harald. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå