代码有时会在 vba 中崩溃

代码有时会在 vba 中崩溃

我有一个代码。如果我在单元格中输入 excel 工作簿路径并单击按钮,则工作簿将打开,并且当前工作簿中 B2 的数据将被复制并粘贴到新打开的工作簿中。代码运行良好。但问题是代码有时会崩溃并引发错误。我无法理解问题是什么。如果代码不正常,那么代码将永远无法完美执行。但就我而言,它有时执行良好,有时会引发错误。请帮忙。这是错误 -

范围类的选择方法失败

以下是代码 -

Private Sub CommandButton1_Click()

Dim pathCell As String

pathCell = Range("locationPath").Value


Dim wbTarget As Workbook 'workbook where the data is to be pasted
Dim wbThis As Workbook 'workbook from where the data is to be copied

'set to the current active workbook (the source book)
Set wbThis = ActiveWorkbook

'copy the range from source book
wbThis.Worksheets(1).Range("B1").Copy

'open a workbook that has same name as the sheet name
Set wbTarget = Workbooks.Open(pathCell)

'Select the target cell
wbTarget.Worksheets(2).Range("B1").Select

'paste the data on the target book
wbTarget.Worksheets(2).Range("B1").PasteSpecial Paste:=xlPasteAll

'clear any thing on clipboard to maximize available memory
Application.CutCopyMode = False

Worksheets(1).Activate


End Sub

任何帮助,将不胜感激!

答案1

我认为这条线失败了,因为它是唯一包含.Select

'Select the target cell
wbTarget.Worksheets(2).Range("B1").Select
  • 如果在运行时该行Worksheets(2)不是活动工作表,则该行将失败并显示错误。您必须在单独的代码行中选择工作表和范围。这可能是您的宏只会间歇性出错的原因。您可能有时会在关闭工作簿之前离开该工作表,而其他时候则不会。

  • 然而,就粘贴操作而言,这似乎没有任何用处,如果您删除该行,您的粘贴应该同样有效。

    • 您后续的代码行完全符合目标单元格的资格。
'paste the data on the target book
wbTarget.Worksheets(2).Range("B1").PasteSpecial Paste:=xlPasteAll

如果由于某种原因,您绝对需要在宏完成时选择该单元格,请首先选择工作表;然后选择该单元格。

另请参阅如何避免在 Excel VBA 中使用 Select 在我们的姊妹网站 stackoverflow 上。

相关内容