如何限制excel-vbamacros到一张纸?

继这个问题之后,我正在运行一个简单的macros,我想运行它,同时仍然能够在其他工作簿或其他工作簿上工作,而无需在这些工作簿上运行代码。 这是代码

Sub Data_Recording() ' ' Data_Recording Macro ' Copy excel line with hyperlinks and paste values in first line of data recording area, insterting and moving old data down. ' ' Rows("5:5").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("B2:F2").Select Selection.Copy Range("B5").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False alertTime = Now + TimeValue("00:00:20") Application.OnTime alertTime, "Data_Recording" End Sub 

我试图在每个范围或行select之前放置工作簿和工作表的名称,但是我一定是做错了什么。

谢谢

您需要调整代码,以便所有范围都可以使用Worksheet对象进行限定,并且不需要.Select.Activate语句。


 Sub Data_Recording() With Workbooks("Workbook_Name_Here").Sheets("Sheet_Name_Here") '// Change as required .Rows(5).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove .Range("B5:F5").Value = .Range("B2:F2").Value '// No need to copy/paste End With Application.OnTime Now + TimeValue("00:00:20"), "Data_Recording" End Sub 

请确保您将上面的代码放在工作表范围中。

在VBA编辑器中,您可以在“项目属性”窗口中看到“Microsoft Excel对象”。 展开它,然后双击您想要使用的工作表(确保您select了正确的工作簿)

在那个代码编辑器中,放上相同的代码(不需要提供表名或工作簿名称)。

它应该工作正常。

尝试这个:

 ThisWorkbook.Sheets("You Sheet").Rows("5:5").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ThisWorkbook.Sheets("You Sheet").Range("B2:F2").Copy ThisWorkbook("You Workbook").Sheets("You Sheet").Range("B5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False alertTime = Now + TimeValue("00:00:20") Application.OnTime alertTime, "Data_Recording"