Gå til innhold

Excel 2003 - hjelp med makroprogrammering


Solaar

Anbefalte innlegg

Jeg ønsker å lage en makro som kopierer et ark i like stort antall som den til enhver tid inneværende måned, OG omdøper hvert ark med riktig dato og ukedag,

 

Jeg har googlet og funnet en makro som, når jeg kjører den, popper opp en boks der jeg må fylle ut månedsnr og så oppretter den alle dagene slik jeg ønsker. Men jeg vet ikke hvordan jeg skal få den til å kopiere et eksisterende ark i stedet for å opprette nye. Noen som kan hjelpe meg med dette?

 

 

Lenke til kommentar
Videoannonse
Annonse

Antakelig, men jeg forstår ikke helt hva du spør om. Men se om denne får deg i gang, kjør den mens du står i et ark ved navn Ark1.

 

Sub Demo()
Dim Dt As Date
Dim Wks As Worksheet
Dim Wb As Workbook
ThisWorkbook.Sheets("Ark1").Copy
DoEvents
Set Wks = ActiveSheet
Set Wb = Wks.Parent
Wks.Name = Format(DateSerial(Year(Date), Month(Date), 1), "dddd dd.mm.yy")
For Dt = DateSerial(Year(Date), Month(Date), 2) To DateSerial(Year(Date), Month(Date) + 1, 0)
   Wks.Copy After:=Sheets(Wb.Sheets.Count)

   Wb.Sheets(Wb.Sheets.Count).Name = Format(Dt, "dddd dd.mm.yy")

Next
End Sub

 

HTH. Beste hilsen Harald

  • Liker 1
Lenke til kommentar

Hehe, skjønner godt at du ikke helt forsto hva jeg spurte om siden jeg glemte å linke til den opprinnelige makroen jeg hadde brukt. Men allikevel klarte du å gi meg akkurat det jeg var ute etter, tusen takk! Et spørsmål har jeg bare: Vil datoene som genereres automatisk tilsvare inneværende måned, altså vil den lage en excelbok med datoene i februar dersom det hadde vært den 1. februar i dag?

 

En liten ting til også: Hvis jeg, etter at den nye boken er opprettet, ønsker at den skal beskyttes (uten passord), hva må skrives på enden da? Kunne du gitt meg den linjen også så jeg får lagt til den på slutten? (regner med at det legges rett før "next"?)

Lenke til kommentar

Jeg ønsker å beskytte regnearket og alt innhold i de låste cellene. Dvs som om jeg hadde valgt fra menylinjen: verktøy -> beskyttelse -> beskytt ark (og deretter bare trykt enter på standardvalget som dukker opp, uten å legge inn passord).

Lenke til kommentar

Ok. Tusen takk igjen, det fungerte. Så en siste ting, håper du kan hjelpe meg med det også. Vil at makroen til slutt skal gjøre slik at man hopper til det første arket og velger celle A4, hvordan får jeg det inn i den samme koden?

 

Har forsøkt:

 

JumpFirst()
Sheets(1).Activate
Range("A4").Select

 

...men får det ikke til å fungere?

Lenke til kommentar

Du legger det der du vil det skal skje, som bør være til slutt. Her, samlepakke av hva vi har snakket om:

 

Sub Demo()
Dim Dt As Date
Dim Wks As Worksheet
Dim Wb As Workbook
ThisWorkbook.Sheets("Ark1").Copy
DoEvents
Set Wks = ActiveSheet
Set Wb = Wks.Parent
Wks.Protect
Wks.Name = Format(DateSerial(Year(Date), Month(Date), 1), "dddd dd.mm.yy")
For Dt = DateSerial(Year(Date), Month(Date), 2) To DateSerial(Year(Date), Month(Date) + 1, 0)
   Wks.Copy After:=Sheets(Wb.Sheets.Count)

   Wb.Sheets(Wb.Sheets.Count).Name = Format(Dt, "dddd dd.mm.yy")
Next
Wb.Protect Structure:=True, Windows:=False
Sheets(1).Activate
DoEvents
Range("A4").Select
End Sub

 

ellers kan du legge den som en separat prosedyre eller funksjon og kalle den fra hovedprosedyren, men skriftlig opplæring i slikt er litt utenfor rammene av et forum som dette.

 

Beste hilsen Harald

  • Liker 1
Lenke til kommentar

Ok, så den siste koden her tar med alt det vi har snakket om? Får ikke testet det igjen før på tirsdag så gir deg en tilbakemelding da. Uansett skal du ha tusen takk for at du tok deg tid til å hjelpe meg med dette, det setter jeg stor pris på!

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