2

我有这段代码,如果我在选择或激活 Sheet1 时运行宏,它工作正常。
However it fails when other sheets are selected. 为什么?
我得到一个:

运行时错误:范围类的选择方法失败

是不是被我覆盖了Set ws = ThisWorkbook.Sheets("Sheet1")

Sub test()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lrow = .Range("A" & .Rows.Count).End(xlUp).Row
        .Range("A1:M" & lrow).Select
    End With
End Sub

如何改进代码并避免Runtime Error?
我错过了什么?
任何帮助将非常感激。

4

1 回答 1

1

对自己。它包含公式,所以我想保留从公式中获得的值的数据格式并将其粘贴为值。– L42 1 分钟前

就像我提到的,你可以避免.Select在大多数情况下使用。

这是你正在尝试的吗?

代替

.Range("A1:M" & lrow).Select 

.Range("A1:M" & lrow).Value  = .Range("A1:M" & lrow).Value

或者也许这个?

Sub test()
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lrow = .Range("A" & .Rows.Count).End(xlUp).Row
        .Range("A1:M" & lrow).Copy
        .Range("A1:M" & lrow).PasteSpecial xlPasteValues
    End With
End Sub
于 2013-10-11T07:08:36.783 回答