В столбце A у меня есть блоки соответствующего текста, между которыми я хочу нарисовать границы. Блоки имеют разный размер, поэтому для различия между блоками я проверяю, отличаются ли значения двух соседних ячеек.
Сначала я попробовал это:
Sub draw_borders()
Dim p As Range, a As Variant, b As Range, c As Range, d As Variant
For Each p In Intersect(Range("A:A"), sht.UsedRange)
a = p.Value
Set c = Range(Cells(p.Row, p.Column), Cells(p.Row, p.Column))
b = c.Offset(-1, 0)
d = b.Value
If a <> d Then
Dim DataRange3 As Range
Set DataRange3 = Range(Cells(p.Row, 1), Cells(p.Row, 2))
DataRange3.Borders(xlEdgeTop).LineStyle = xlContinuous
End If
Next p
End Sub
Кстати, «шт» ранее определено как активный лист. Я продолжал получать сообщение об ошибке во время выполнения:
b = c.Offset(-1, 0)
Поэтому я попытался включить смещение в определение c, удалил определение b и отредактировал определение d.
Sub draw_borders()
Dim p As Range, a As Variant, b As Range, c As Range, d As Variant
For Each p In Intersect(Range("A:A"), sht.UsedRange)
a = p.Value
Set c = Range(Cells(p.Row, p.Column), Cells(p.Row, p.Column)).Offset(-1,0)
d = c.Value
If a <> d Then
Dim DataRange3 As Range
Set DataRange3 = Range(Cells(p.Row, 1), Cells(p.Row, 2))
DataRange3.Borders(xlEdgeTop).LineStyle = xlContinuous
End If
Next p
End Sub
Это сработало ... но только один раз. Если я запустлю его снова, он выдаст мне ошибку времени выполнения:
Set c = Range(Cells(p.Row, p.Column), Cells(p.Row, p.Column)).Offset(-1,0)
Что не так с моим кодом?
Я только начал изучать vba на этой неделе, и у меня нет никакого опыта в программировании, так что мое форматирование может быть немного неправильным.