Avatar billede steensommer Praktikant
08. november 2003 - 13:44 Der er 10 kommentarer og
2 løsninger

kopiering af sheet

Nedenstående vba kopierer et regneark(Data) og indsætter det efter nævnte ark. I det nye ark skal viste Range cleares og visse celler låses op.
Koden fungerer sådan set (med række 5+6 indsat i stedet for række 3+4). Problemet er at jeg ikke kan regne med at det nye ark hedder: Data (2). Det må kunne løses med en variabel eller hva'?
 
    Dim d As Date
    Dim sht As Sheets.Name
    Sheets("Data").Copy After:=Sheets("Data") = sht
    sht.Range("C25:ae45").ClearContents
    'Sheets("Data (2)").Range("C25:AE45").Select
    'Selection.ClearContents
    Range("C25").Select
    ActiveSheet.Unprotect Password:="varde"
    Range("C9:Ae9").ClearContents
    d = InputBox("Indtast arkets første dato (ex: 12-12)")
    Range("C10").Value = d
    Range("C10").Locked = False
    EnableSelection = xlUnlockedCells
    ActiveSheet.Protect Password:="varde", DrawingObjects:=True, Contents:=True, Scenarios:=True

vh Steen
Avatar billede stefanfuglsang Juniormester
08. november 2003 - 13:53 #1
jeg forstår ikke dette (det kan jo være min fejl)
  Dim sht As Sheets.Name
    Sheets("Data").Copy After:= Sheets("Data") = sht
    sht.Range("C25:ae45").ClearContents

sht er et "Name"? og lighedstegnet i linie 2?
Avatar billede stefanfuglsang Juniormester
08. november 2003 - 13:55 #2
.. men jeg mener at worksheets.count er nummeret på dit nye ark:
worksheets(worksheets.count).name = "NyData"
Avatar billede stefanfuglsang Juniormester
08. november 2003 - 14:01 #3
..nej det virker kun, hvis du anbringer arket sidst. (du kan evt. gøre det og bruge .move, men der er nok en bedre løsning)
Avatar billede stefanfuglsang Juniormester
08. november 2003 - 14:14 #4
.Copy returnerer ikke noget object. Så du må lave noget i stil med (jeg har brugt variabler i stedet for konstanten "Data"):

  dim dataname as string, newdataname as string
  dataname = "Data"
  newdataname = "NyData"
  Sheets(dataname).Copy After:=Sheets("dataname")
  Sheets(dataname & " (2)").Name = newdataname

Hvis du altid bruger unikke navne (ikke har ark der hedder "Data (2)", "Data (3)",...), så vil "Data (2)" være entydigt det nye ark
Avatar billede kabbak Professor
08. november 2003 - 14:19 #5
efter en kopiering af ark, er det kopierede ark, det aktive ark.

så kan det omdøbes med
ActiveSheet.Name = "NyData"
Avatar billede steensommer Praktikant
08. november 2003 - 14:29 #6
Ja der havde da sneget sig nogle fejl ind da jeg forsøgte at lave kopieringen om :0). Men det kabbak skriver virker da vist - jeg prøver.
Avatar billede steensommer Praktikant
08. november 2003 - 14:32 #7
--> kabbak  Kan man ikke ændre navnet således at det ændrer sig for hver gang koden bruges ex. Data(1)..Data(2) etc
Avatar billede kabbak Professor
08. november 2003 - 14:36 #8
ActiveSheet.Name = "Data " & Date

så kommer det til at hedde Data + dags dato.

kan det bruges ?
Avatar billede steensommer Praktikant
08. november 2003 - 14:40 #9
Det holder desværre ikke "stilen" i projektmappen. Jeg er nok nødt til at anvende tal-rækkefølgen men således at den automatisk øges med 1 hvis arket eksisterer (hvis du forstår hvad jeg mener)
Avatar billede steensommer Praktikant
08. november 2003 - 15:01 #10
Pyt - problemet er faktisk klaret med "ActiveSheet da jeg derved kan køre clearcontents i det nye ark uanset navn. Det må vist være kabbak jeg skylder et par point :0) Er det OK med jer - tak til begge!!!
Avatar billede kabbak Professor
08. november 2003 - 15:12 #11
Jaa, men stefanfuglsang burde også få, han har også arbejdet.
Avatar billede steensommer Praktikant
08. november 2003 - 15:23 #12
Helt i orden med mig!
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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