14.10.2005, 20:49
Нет предела свершенству!
Замените 3 действия одним!
Sub Ravno()
Dim R1 As Range, R2 As Range, c As Range, DiffAddr As String
DiffAddr = ""
With Selection.Areas
If .Count = 2 Then
Set R1 = .Item(1)
Set R2 = .Item(2)
If R1.Rows.Count = R2.Rows.Count And _
R1.Columns.Count = R2.Columns.Count Then
For Each c In R2
If c.Value <> Cells(c.Row - R2.Row + R1.Row, c.Column - R2.Column + R1.Column).Value Then
DiffAddr = DiffAddr & "," & c.Address(False, False)
End If
Next
DiffAddr = Mid(DiffAddr, 2)
If DiffAddr = "" Then
MsgBox "These ranges are equals. Congratulations!!!"
Else
Range(DiffAddr).Select
MsgBox Selection.Cells.Count & " wrong cell(s) was found."
End If
Else
MsgBox "These ranges are not equals because its size is different."
End If
Else
MsgBox "Select exactly TWO ranges, please."
End If
End With
End Sub
Теперь надо выделить один (эталоный) массив, затем с клавишей Ctrl второй (порядок выделения важен!), в котором ищутся отличия и запустить макрос. Он найдет и выделит ВСЕ отличия.
PS
Поясню прелесть выделения нескольких ячеек:
Выделенные ячейки можно редактировать "прыгая" по ним клавишей Enter. Главное - это не нажимать стрелок.
Avsha
15.10.2005, 09:32
Naeel Maqsudov,
Спасибо за вариант,
я тоже думал, как нормальный (или ненормальный) :) максималист о выделении обоих диапазонов за раз.
Но есть ограничение при этом способе выбора, оно следущее:
Если выбирать один диапазон с помощью клавиатуры, например длинный столбец длиной под 1000 ячеек,
то я использую удобное сочтание Shift-Ctrl-стрелка вниз, - выделяется столбец до "упора" - последнего значения.
Но выделить одновременно два таких столбца - удобным способом у меня не очень получается.
Хотя для небольших диапазонов - ваш вариант несомненно выигрывает по лаконичности.