Avatar billede tdh1309 Juniormester
06. december 2011 - 14:09 Der er 1 kommentar og
1 løsning

Kopiering af sheet, med definering af navn

Hej

Jeg vil gerne kopiere et sheet, og bestemme hvad det skal hedde.
Umiddelbart kan jeg kopiere som nedenfor

Set copyWS = ThisWorkbook.Worksheets("tmp1")
copyWS.Activate
copyWS.Copy after:=copyWS

På denne måde hedder det nye sheet "tmp1(2)", kan man bestemme navnet direkte ved kopiering, eller skal jeg "manuelt" omdøbe det nye sheet (hvis ja, og hvordan)?

Sekundært:
Hvordan "bladrer" jeg smartes i mine "sheets"?
Har forsøgt med: 
ActiveSheet.Next.Select

Men den fejler!
Avatar billede tdh1309 Juniormester
06. december 2011 - 15:10 #1
Løst ved:

' Purpose:
' Parameter: sourceWS        - Worksheet to copy
'            destinationName - Name of the duplicate WS
Function CopyWS(sourceWS As Worksheet, destinationName As String) As Worksheet

  ' If a sheet name "destinationName" already exists -> delete sheet
  If WorksheetExists(destinationName) Then
    ThisWorkbook.Sheets(destinationName).Delete
  End If
 
  sourceWS.Activate
  sourceWS.Copy after:=sourceWS
  Set CopyWS = ThisWorkbook.Worksheets(ActiveSheet.Index)
  CopyWS.Name = destinationName
End Function

Nedenstående er fra: http://www.mrexcel.com/forum/showthread.php?t=3228 (Spencer Jobe)
Public Function WorksheetExists(ByVal WorksheetName As String) As Boolean
On Error Resume Next
  WorksheetExists = (Sheets(WorksheetName).Name <> "")
On Error GoTo 0
End Function


Pt. er eneste minus at den spørger om "ark" skal slettes!
Avatar billede tdh1309 Juniormester
06. december 2011 - 15:15 #2
Nedenfor CopyWS uden "confirmation" af delete.
Det slås fra ved:
Application.DisplayAlerts = False
Og slås til ved:
Application.DisplayAlerts = True


Function CopyWS(sourceWS As Worksheet, destinationName As String) As Worksheet

  ' If a sheet name "destinationName" already exists -> delete sheet
  If WorksheetExists(destinationName) Then
    Application.DisplayAlerts = False
      ThisWorkbook.Sheets(destinationName).Delete
    Application.DisplayAlerts = True
  End If
 
  sourceWS.Activate
  sourceWS.Copy after:=sourceWS
  Set CopyWS = ThisWorkbook.Worksheets(ActiveSheet.Index)
  CopyWS.Name = destinationName
End Function
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