Excel 避免从已声明和设置的WS中选择范围时出现运行时错误

Excel 避免从已声明和设置的WS中选择范围时出现运行时错误,excel,excel-2007,vba,Excel,Excel 2007,Vba,我有此代码,如果我在选择或激活Sheet1时运行宏,它工作正常。 但是,当选择其他图纸时,它将失败。为什么? 我得到一个: 运行时错误:选择范围类的方法失败 当我Set ws=thiswoolk.Sheets(“Sheet1”)时,它不包括在内吗 如何改进代码并避免运行时错误 我错过了什么 任何帮助都将不胜感激 自言自语。它包含公式,因此我希望保留从公式中获得的值的数据格式,并将其粘贴为值L42 1分钟前 正如我提到的,您可以避免使用。在大多数情况下选择 这就是你想要的吗 替换 .Range("

我有此代码,如果我在选择或激活Sheet1时运行宏,它工作正常。
但是,当选择其他图纸时,它将失败。为什么?
我得到一个:

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

当我
Set ws=thiswoolk.Sheets(“Sheet1”)时,它不包括在内吗

如何改进代码并避免运行时错误

我错过了什么
任何帮助都将不胜感激


自言自语。它包含公式,因此我希望保留从公式中获得的值的数据格式,并将其粘贴为值L42 1分钟前

正如我提到的,您可以避免使用
。在大多数情况下选择

这就是你想要的吗

替换

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

或者这个

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

为什么要选择范围?为什么不直接使用它呢?我确实这样做了:)问题是我需要保留值的数据格式。因此,我尝试选择并执行粘贴特殊操作。有没有一种方法可以直接复制和粘贴到范围并保留数据格式?是的。要将
.Range(“A1:M”&lrow)
复制到何处?复制到自身。它包含公式,所以我想保留从公式中得到的值的数据格式,并将其粘贴为值。是的,这就是我使用的。不幸的是,我有一个字符串形式的长数字(我从公式中得到的值)。该代码将该值更改为数字而不是文本。您能给我一个该字符串的示例吗?所以我可以在更新上面的邮资长号码之前进行测试。(例如250000326959205128)。哈哈,一切正常。当我第一次尝试时,那个论点就不成立了。我使用了“(”作为对空格的反对。
.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