Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi,
I have a section of code that alters a worksheet then exports its contents to Word. I don't want to roll back the changes, so I just copy the worksheet, makes the changes, copy to Word, then delete the copied worksheet. But the Worksheet.Copy method doesn't return a reference to the new sheet. So I end up creating a concatenated list of the sheet names before the Copy, then iterating through sheets after the Copy and returning the sheet whose name is not in the original list. It's kind of kludgey and I was wondering whether there was a more straightforward way. The code looks something like this: '================================================= ============== Private Function CopyWorksheet(OldWorksheet As Worksheet) As Worksheet Dim ws As Worksheet Dim sNames As String If OldWorksheet Is Nothing Then Set CopyWorksheet = Nothing Exit Function End If sNames = "," For Each ws In ActiveWorkbook.Worksheets sNames = sNames & (ws.Name & ",") Next OldWorksheet.Copy After:=OldWorksheet ' enclose search string in commas to avoiud substring matching For Each ws In ActiveWorkbook.Worksheets If InStr(1, sNames, ("," & ws.Name & ",")) < 1 Then Set CopyWorksheet = ws Exit For End If Next 'SetPageBreakCounts End Function '================================================= ============== Sub CopyWorksheet_UnitTest() Dim ws As Worksheet: Set ws = ActiveSheet ' Test standard usage Set ws = CopyWorksheet(ws) If Not ws Is Nothing Then Debug.Print ws.Name Else Debug.Print "<nothing" End If ' Test with Nothing Set ws = Nothing Set ws = CopyWorksheet(ws) If Not ws Is Nothing Then Debug.Print ws.Name Else Debug.Print "<nothing" End If Set ws = Nothing End Sub '================================================= ============== Thanks, Nicholas Hebb BreezeTree Software http://www.breezetree.com |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
anchoring a cell reference in formula copied or dragged over a ran | Excel Discussion (Misc queries) | |||
how to change old data source reference from copied pivot tables | Excel Discussion (Misc queries) | |||
How do I get a worksheet reference to increment when copied | Excel Worksheet Functions | |||
XL2007: Linked-labels reference is not copied with sheet | Charts and Charting in Excel | |||
Cell reference update when copied and pasted | Excel Worksheet Functions |