[英]How to restrict excel-vba macro to one sheet?
在回答這個問題之后,我正在運行一個簡單的宏,我希望它能夠運行在其他工作簿或其他工作簿的工作簿上,而無需運行代碼。 這是代碼
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
我嘗試在每個范圍或行選擇之前放置工作簿和工作表的名稱,但我必須做錯事。
謝謝
您需要調整代碼,以便使用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
嘗試這個:
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"
請確保將上述代碼放在工作表范圍內。
在VBA編輯器中,您可以在“項目屬性”窗口中看到“Microsoft Excel對象”。 展開它並雙擊要使用的工作表(確保您也選擇了正確的工作簿)
在該代碼編輯器中,將相同的代碼放在上面(無需提供工作表名稱或工作簿名稱)。
它應該工作正常。
Public Sub MyMacro
If ActiveSheet.Name < "Safe" Then Exit Sub
'rest of your macro here
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.