Как сравнить два значения в разных листах в VBA? - PullRequest
1 голос
/ 21 ноября 2019

Я новичок в VBA. Здесь я хочу сравнить два значения в разных листах, принадлежащих одной и той же книге. В Листе 1 только столбец А заполнен небольшим числом (то есть 1,2,3,4,5), а в Листе 2 три столбца заполнены значениями enter code here. Принимая во внимание, что в колонке Листа 2 есть следующие значения (то есть 2,1,4,3,5). Здесь я сравниваю значения столбца Листа А со значениями столбца А из Листа2. Я получаю непрерывную ошибку

Ошибка выполнения "13"

Option Explicit

Sub chek()
Dim ws As Workbook
Set ws = ThisWorkbook
Dim sheet As Worksheet
Dim firstRng As Integer
firstRng = Sheet2.Range("A:A").Value
Dim secondrng As Integer
secondrng = Sheet1.Range("A:A").Value

Dim i As Integer
For i = 1 To 5

    For Each sheet In Worksheets
        If IsArray(secondrng) = IsArray(firstRng) Then
            Sheet2.Range("A1:C1").Value.Copy
            Sheet3.PasteSpecial

        End If

    Next sheet
Next i
End Sub

1 Ответ

0 голосов
/ 21 ноября 2019

Этот код должен сработать. Как уже упоминалось: вы не можете присвоить диапазон целому числу. Во-вторых, VBA не очень хороша для массивов, поэтому мне нравится сравнивать значения 1 к 1. Чего я не получил, так это того, что вы хотите копировать, когда столбец равен, ИЛИ, если хотите копировать все, если всеравны. Код ниже делает первый.

Sub check()
Dim ws As Workbook
Set ws = ThisWorkbook
Dim firstrng As Range
Dim secondrng As Range
Set firstrng = Sheets(1).Range("A:A")
Set secondrng = Sheets(2).Range("A:A")

Dim i As Integer
For i = 1 To 5
    If firstrng.Cells(i, 1).Value = secondrng.Cells(i, 1).Value Then
        Sheets(1).Range("A" & i & ":C" & i).Copy Destination:=Sheets(3).Range("A" & i & ":C" & i)
    End If
Next i

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...