Vba 工作表。选择+复制/粘贴无效[Excel 2016]

Vba 工作表。选择+复制/粘贴无效[Excel 2016],vba,excel,Vba,Excel,我有一个宏,它从BD工作表复制一些列并粘贴到另一个工作表中 我在Excel2007中使用了这段代码,但在选择工作表,然后在Excel2010和更高版本中复制/粘贴时遇到了一个问题。问题似乎不在我的。选择。似乎是在PasteSpecial中自动选择with Sheet并执行other。复制而不返回de previous Sheet屏幕会在每个PasteSpecial中闪烁-我不知道是否足够清晰。[有时工作正常,尤其是使用调试器] 代码 但密码将是硬的 那是因为你做得不对 而不是 With Shee

我有一个宏,它从BD工作表复制一些列并粘贴到另一个工作表中

我在Excel2007中使用了这段代码,但在选择工作表,然后在Excel2010和更高版本中复制/粘贴时遇到了一个问题。问题似乎不在我的。选择。似乎是在PasteSpecial中自动选择with Sheet并执行other。复制而不返回de previous Sheet屏幕会在每个PasteSpecial中闪烁-我不知道是否足够清晰。[有时工作正常,尤其是使用调试器]

代码

但密码将是硬的

那是因为你做得不对

而不是

With Sheets(PRICE_SHEET)
    bdSheet.Range(bdSheet.Cells(2, 2), bdSheet.Cells(lastRow, 2)).Copy
    .[A2].PasteSpecial xlPasteValues
End With
这样做

With bdSheet
    .Range(.Cells(2, 2), .Cells(lastRow, 2)).Copy
    Sheets(PRICE_SHEET).[A2].PasteSpecial xlPasteValues  '<---- Working
End With
可以写成

Range2.Value = Range1.Value
应用上述方法,我重新编写了您的代码。这就是你想要的吗?未经测试

With bdSheet
    .Range(.Cells(2, 2), .Cells(lastRow, 2)).Copy
    Sheets(PRICE_SHEET).[A2].PasteSpecial xlPasteValues  '<---- Working
End With
Range1.Copy
Range2.PasteSpecial xlPasteValues
Range2.Value = Range1.Value
Private Sub LoadPrices()
    Dim wsCopyFrm As Worksheet, wsCopyTo As Worksheet
    Dim rng As Range
    Dim lastRow As Long

    Set wsCopyFrm = ThisWorkbook.Sheets(BD_SHEET)
    Set wsCopyTo = ThisWorkbook.Sheets(PRICE_SHEET)

    With wsCopyFrm
        lastRow = .Range("A" & .Rows.Count).End(xlUp).Row

        Set rng = .Range(.Cells(2, 2), .Cells(lastRow, 2))
        wsCopyTo.Range("A2").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value

        Set rng = .Range(.Cells(2, 7), .Cells(lastRow, 7))
        wsCopyTo.Range("B2").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value

        Set rng = .Range(.Cells(2, 9), .Cells(lastRow, 10))
        wsCopyTo.Range("C2").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value

        Set rng = .Range(.Cells(2, 12), .Cells(lastRow, 12))
        wsCopyTo.Range("E2").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value
    End With
End Sub