将当前工作表设置为一个variables,以便更容易地使用公式

我想将当前活动工作表设置为一个variables,以便能够更轻松地使用vlookup而不会有问题。 我想这样做的原因是因为我每天运行这个macros,并且活动工作表每天都有新的名称(新的date)。 现在在我的macros里面我使用ActiveSheet,但我使用了很多的vlookups来回来,所以它crushes ..我将提供的代码,以便更清楚的开始..所有我需要的是一种方法来设置当前积极的书作为一个variables。 这样,即使活动工作表发生更改,旧的当前工作表也将被保存为variables

Application.DisplayAlerts = False ActiveSheet.Cells.Copy Worksheets.Add.Name = ActiveSheet.Name & "_Daily_RCCP" With ActiveSheet .Cells.PasteSpecial xlValues .Cells.PasteSpecial xlFormats End With Application.DisplayAlerts = True 

正如你所看到的活动工作表更改两次所以,我想设置最后一个活动工作表作为一个variables

绘制出@ScottCraner在评论中提到的内容。

 Dim ws1 as Worksheet Set ws1 = ActiveSheet Worksheets.Add.Name = ws1.Name & "_Daily_RCCP" Dim ws2 as Worksheet Set ws2 = ActiveSheet 'bc adding a sheet automatically makes it active ws1.Cells.Copy With ws2.Cells .PasteSpecial xlValues .PasteSpecial xlFormats End With 'nb - i would personally avoid copying all the cells in a worksheet 'instead copying the usedrange or some defined range 

我想稍微改写一下Scott Holtzman的答案:

 Dim ws1 as Worksheet, ws2 as Worksheet Set ws1 = ActiveSheet 'here you add a sheet and directly assign it to a variable Set ws2 = Worksheets.Add.Name = ws1.Name & "_Daily_RCCP" ws1.Cells.Copy With ws2.Cells .PasteSpecial xlValues .PasteSpecial xlFormats End With 

另请注意,每个工作表都有两个名称:用户看到的选项卡名称( .Name ),以及只能从VBE( .CodeName )中看到的其他名称。
实际上,如果您将一些代码放在Sheet1(CodeName)后面,也可以使用Me (当前类对象)引用它,就像您可以使用ThisWorkbook指定包含代码的工作簿一样。

因此你可以这样重写上面的内容:

 Dim ws2 as Worksheet 'here you add a sheet and directly assign it to a variable Set ws2 = Worksheets.Add.Name = Sheet1.Name & "_Daily_RCCP" 'No need for an extra variable ws1 since we use the CodeName sheet1.Cells.Copy With ws2.Cells .PasteSpecial xlValues .PasteSpecial xlFormats End With 

或者代码位于Sheet1后面:

 Dim ws2 As Worksheet Set ws2 = Worksheets.Add ws2.Name = Me.Name & "_Daily_RCCP" 'No need for an extra variable ws1 since we use Me Me.Cells.Copy ws2.PasteSpecial xlPasteValuesAndNumberFormats