Добрый день! Не получается к решению прикрутить проверку условия- если значения массивов совпадают, то одно действие, если нет, то другое. Не уверен, что здесь нужно применять именно массивы. Доверяю Вашему экспертному мнению )) Пример приложил
Добрый день! Не получается к решению прикрутить проверку условия- если значения массивов совпадают, то одно действие, если нет, то другое. Не уверен, что здесь нужно применять именно массивы. Доверяю Вашему экспертному мнению )) Пример приложилLeprotto
Так массивы нельзя проверить разом, надо поочерёдно каждый элемент. [vba]
Код
Sub test() Dim shtX As Worksheet Dim rngNew As Range Dim rngOld As Range Dim unoCell As Range Dim flag As Boolean Dim vNew Dim vOld
Set shtX = ThisWorkbook.Worksheets(1) Set rngNew = shtX.Range("vNew") Set rngOld = shtX.Range("vOld")
vNew = rngNew vOld = rngOld flag = True For Each unoCell In rngNew If unoCell.Value <> unoCell.Offset(rngOld.Row - rngNew.Row, rngOld.Column - rngNew.Column).Value Then
flag = False Exit For End If Next If flag Then MsgBox "значения совпадают" 'если все значения массива совпадают Else MsgBox "значения различаются" 'если хотя бы одно не совпадает End If
End Sub
[/vba]
Так массивы нельзя проверить разом, надо поочерёдно каждый элемент. [vba]
Код
Sub test() Dim shtX As Worksheet Dim rngNew As Range Dim rngOld As Range Dim unoCell As Range Dim flag As Boolean Dim vNew Dim vOld
Set shtX = ThisWorkbook.Worksheets(1) Set rngNew = shtX.Range("vNew") Set rngOld = shtX.Range("vOld")
vNew = rngNew vOld = rngOld flag = True For Each unoCell In rngNew If unoCell.Value <> unoCell.Offset(rngOld.Row - rngNew.Row, rngOld.Column - rngNew.Column).Value Then
flag = False Exit For End If Next If flag Then MsgBox "значения совпадают" 'если все значения массива совпадают Else MsgBox "значения различаются" 'если хотя бы одно не совпадает End If
Sub test2() Dim vNew, vOld vNew = Range("vNew").Value vOld = Range("vOld").Value
With Application If Join(.Index(vNew, 1, 0)) = Join(.Index(vOld, 1, 0)) Then MsgBox "значения совпадают" 'если все значения массива совпадают Else MsgBox "значения различаются" 'если хотя бы одно не совпадает End If End With
End Sub
[/vba]
вариант [vba]
Код
Sub test2() Dim vNew, vOld vNew = Range("vNew").Value vOld = Range("vOld").Value
With Application If Join(.Index(vNew, 1, 0)) = Join(.Index(vOld, 1, 0)) Then MsgBox "значения совпадают" 'если все значения массива совпадают Else MsgBox "значения различаются" 'если хотя бы одно не совпадает End If End With
Sub test() Dim shtX As Worksheet Dim rngNew As Range Dim rngOld As Range
Set shtX = ThisWorkbook.Worksheets(1) Set rngNew = shtX.Range("vNew") Set rngOld = shtX.Range("vOld")
If UBound(Filter(Application.CountIf(rngNew, rngOld.Value), 0)) = -1 Then MsgBox "значения совпадают" 'если все значения массива совпадают Else MsgBox "значения различаются" 'если хотя бы одно не совпадает End If
End Sub
[/vba]
еще вариант
[vba]
Код
Sub test() Dim shtX As Worksheet Dim rngNew As Range Dim rngOld As Range
Set shtX = ThisWorkbook.Worksheets(1) Set rngNew = shtX.Range("vNew") Set rngOld = shtX.Range("vOld")
If UBound(Filter(Application.CountIf(rngNew, rngOld.Value), 0)) = -1 Then MsgBox "значения совпадают" 'если все значения массива совпадают Else MsgBox "значения различаются" 'если хотя бы одно не совпадает End If