代码在一张纸上运行(复制并粘贴),而在另一张纸上运行则不执行任何操作

时间:2019-04-08 18:17:39

标签: excel vba copy-paste worksheet

这应该很容易解决,但我找不到问题。

我有2张纸“ DispoData”和“休眠”。 我想修复并将日期从“ DispoData”中的“ A1”复制到“休眠”表中的“ C8:E8”。

如果“ DispoData”工作表处于活动状态并运行该代码,则该代码可以正常工作,但是如果我在任何其他工作表中并运行它,则“休眠工作表”上的单元格“ C8:E8”为空

Dim wbTemplate As Workbook
Dim ws As Worksheet, wsDispoData As Worksheet, wsDormant As Worksheet
Set wbTemplate = Workbooks("Makro Stock Management Bundle TEMPLATE.xlsm")
Set wsDispoData = wbTemplate.Worksheets("DispoData")
Set wsDormant = wbTemplate.Worksheets("Dormant Stock")


    Application.ScreenUpdating = False

'Add date from Dispo to Dormant sheet, convert to date and delete other writing
    With wsDispoData.Range("A1")
        .FormulaR1C1 = Left(Range("A1"), 10)
        .Copy wsDormant.Range("C8:E8")
    End With

    Application.CutCopyMode = False
    wsDormant.Range("C8:E8").NumberFormat = "dd.mm.yyyy"

无论哪个工作表处于活动状态,我都希望代码能够运行。 有很多代码,因此我仅在最后一次激活屏幕更新。我已经逐步运行了代码,如果我没有在“ DispoData”表处于活动状态的情况下运行代码,则除粘贴部分外,其他所有东西都不会起作用。

1 个答案:

答案 0 :(得分:1)

固定版本:使用@BigBen帮助表单。

With wsDispoData.Range("A1")
    .FormulaR1C1 = Left(wsDispoData.Range("A1"), 10)
    .Copy wsDormant.Range("C8:E8")
End With