Код иногда дает сбой в 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

Если по какой-то причине вам абсолютно необходимо, чтобы эта ячейка была выбрана после завершения макроса, сначала выберите рабочий лист, а затем выберите ячейку.

Также смКак избежать использования Select в Excel VBA на нашем дочернем сайте stackoverflow.

Связанный контент