Автоматическая передача диапазона данных с одного листа на другой с использованием VBA - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь скопировать данные (Зона) из листа1 и вставить его в лист2 с помощью кнопки. После нажатия кнопки исходные данные на листе 1 будут удалены после переноса на лист 2.

Я продолжаю получать

Ошибка 13: Несоответствие типов

на линии Zone = Range("A2:A20").Value.

Могу ли я использовать этот код для передачи нескольких строк данных, и если да, то какую ошибку я совершаю с моим кодом?

Private Sub CommandButton1_Click()
    Dim Zone As Integer
    Worksheets("sheet1").Select
    Zone = Range("A2:A20").Value
    Worksheets("sheet2").Select
    Worksheets("sheet2").Range("B1").Select

    If Worksheets("sheet2").Range("B1").Offset(1, 0) <> "" Then
        Worksheets("sheet2").Range("B1").End(xlDown).Select
    End If

    ActiveCell.Offset(1, 0).Select
    ActiveCell.Value = Zone
    Worksheets("sheet1").Select
    Worksheets("sheet1").Range("A2").ClearContents
End Sub

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Может как то так? Обратите внимание, что запрос выполнен без использования .Select


Option Explicit

Sub Test()

Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet2")

Dim LR As Long, cRange As Range '(copy Range)
LR = ws2.Range("B" & ws2.Rows.Count).End(xlUp).Offset(1).Row
Set cRange = ws1.Range("A1:A20")

If ws2.Range("B2") <> "" Then
    ws2.Range("B" & LR).Resize(cRange.Rows.Count, cRange.Columns.Count).Value = cRange.Value
    ws1.Range("A2").ClearContents
End If

End Sub
0 голосов
/ 12 марта 2019

Вы пытаетесь применить диапазон к целому числу

С

Dim Zone As Integer
Zone = Range("A2:A20").Value

К

Dim Zone As Range
Set Zone = Range("A2:A20")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...