簡體   English   中英

如何將excel-vba宏限制為一張?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM