我正在寻找VBA将活动工作表复制到新工作表,我希望VBA能够从活动工作表中复制页面布局。同样,如果每个工作表的单元格O3可以增加1。不确定是否可能但是如果工作表将自己重命名为Cell O2中的对应部分
我目前正在使用以下代码,这会将活动工作表复制到新工作表,但它不会保留我的格式(边距,缩放)
Sub Macro1()
Cells.Select
Selection.Copy
Worksheets.Add after:=Sheets(Sheets.Count)
Range("A1").Select
ActiveSheet.Paste
End Sub
我对以下内容进行了一些调整
Sub Macro1()
Dim sheetToCopy As Worksheet, newSheet As Worksheet
Set sheetToCopy = ActiveSheet
sheetToCopy.Copy After:=Sheets(Sheets.Count)
Set newSheet = Sheets(Sheets.Count)
newSheet.Range("O2").Value = newSheet.Range("O2").Value + 1
newSheet.Range("O3").Value = newSheet.Range("O3").Value + 1
End Sub
由于O2不断变化,我希望将O2保留为工作表名称。此外,我一直在弹出“名称'Group6'已经存在。单击是以使用该版本的名称......”
我如何才能阻止此对话框弹出?
答案 0 :(得分:0)
Sub Macro1()
Dim sheetToCopy as Worksheet, newSheet as Worksheet
Set sheetToCopy = ActiveSheet
'## Copy to a new sheet
sheetToCopy.Copy After:=Sheets(Sheets.Count)
Set newSheet = Sheets(Sheets.Count)
'## Name the new sheet based on O2 in the original sheet
' NOTE: This will fail if a sheet of this name already exists.
newSheet.Name = sheetToCopy.Range("O2").Value
'## Increment the value in O3 on the new sheet
newSheet.Range("O3").Value = newSheet.Range("O3").Value + 1
End Sub
答案 1 :(得分:0)
此代码包括:
更新新发票日期的两个选项
使用计算机的实际日期(依赖计算机的日期保持更新)(!)
根据模板工作表
处理日期现有发票的两个选项
删除现有发票,保留新发票(!)
通过在名称上添加时间戳来重命名现有发票,同时保留两者。
(!)如果您想使用其中任何一个取消注释并删除\ comment第二个选项
,请在代码中注释这些选项Sub NewInvoice_Add()
Dim WshSrc As Worksheet
Dim WshTrg As Worksheet
Dim sDate As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ThisWorkbook
Rem Set Source Worksheet
Set WshSrc = .Sheets("Sheet 1")
Rem Set Date & Last Invoice Number in Source Worksheet
With WshSrc
'Option 1. Use Actual Date - Relays on date of the computer to be updated
'.Range("O2").Value = Date
'Option 2. Use Next Day as per Template Worksheet
.Range("O2").Value = .Range("O2").Value2 + 1
sDate = Format(.Range("O2").Value2, "dd-mm-yyyy") ' Adjust date format as required
.Range("O3").Value = .Range("O3").Value2 + 1
End With
Rem Create New Invoice from Source Worksheet
WshSrc.Copy After:=.Sheets(.Sheets.Count)
Set WshTrg = .Sheets(.Sheets.Count)
'Dealing with existing worksheet for the date
'Option 1. Deleting it
'On Error Resume Next
'.Sheets(sDate).Delete
'On Error GoTo 0
'Option 2. Renaming it
On Error Resume Next
.Sheets(sDate).Name = sDate & Format(Now, "_HHMM")
On Error GoTo 0
Rem Name New Worksheet
WshTrg.Name = sDate
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub