如何将excel-vba宏限制为一张?

时间:2015-09-24 15:21:11

标签: excel vba excel-vba

关注this问题,我正在运行一个我想要运行的简单宏,同时仍然能够处理其他工作簿或同一工作簿的其他工作表而无需运行代码在那些。这是代码

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

我尝试在每个范围或行选择之前添加工作簿和工作表的名称,但我一定做错了。

由于

4 个答案:

答案 0 :(得分:4)

您需要调整代码,以便使用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

答案 1 :(得分:0)

试试这个:

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"

答案 2 :(得分:0)

请确保将上述代码放在工作表范围内。

在VBA编辑器中,您可以看到“Microsoft Excel对象”'在Project Properties窗口中。 展开它并双击要使用的工作表(确保您也选择了正确的工作簿)

在该代码编辑器中,输入相同的上述代码(无需提供工作表名称或工作簿名称)。

它应该可以正常工作。

答案 3 :(得分:-1)

export PATH=${PATH:+$PATH:}/home/<login>/phantomjs/bin