Страницы: 1
RSS
Найти первую ячейку в столбце, имеющую границы
 
Коллеги, помогите новичку советом:
Кратко:
  • имеем столбец на странице, верхние ячейки которого могут быть заполнены, но не принадлежат таблице
  • ячейки, расположенные ниже, могут быть пустыми или заполненными и принадлежат таблице (имеют границы)
  • задача - найти первую строку таблицы (самую верхнюю ячейку с границами)
Такая идея не помогла
Код
For tb = 1 To 10
    If Cells(tb, 2).Borders.LineStyle = True Then
        MsgBox "Cells(tb, 1).address= " & Cells(tb, 1).address
    End If
Next tb
 
Ищет во 2 столбце листа
Код
Sub sadf()
For tb = 1 To 10
    If Cells(tb, 2).Borders.LineStyle <> xlNone Then
        MsgBox "Cells(tb, 1).address= " & Cells(tb, 1).Address
    End If
Next tb
End Sub
 
, спасибо, все работает. Оказалось все так просто, но самостоятельно я бы не смог разобраться...
 
VIZ_VIZ Разобраться можно во всем при желании. Я когда начинал осваивать не было таких сайтов, правда была одна книга печатная.
Просто времени больше надо потратить
 
Если знать формат то можно использовать поиск. Это просто как пример
Код
Sub Macro3()

    Application.FindFormat.Clear
    With Application.FindFormat.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Application.FindFormat.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Application.FindFormat.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Application.FindFormat.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=True).Activate
End Sub
По вопросам из тем форума, личку не читаю.
 
Коллеги, можете еще подсказать, что не правильно в указанном ниже коде? - решил сделать предыдущий код универсальнее - выдает ошибку: Application-defined or object-defined error (run-time error 1004). Идея была не ограничивать цикл 10 строками, но сразу его прервать, как только будет найдена искомая ячейка.
Код
For Each Row In ActiveSheet.UsedRange
    If Cells(Row, 1).Borders.LineStyle <> xlNone Then
        GoTo LLLL
    End If
Next Row
LLLL:
    MsgBox "Row = " & Row
Exit Sub
 
VIZ_VIZ,
Код
For Each rw In ActiveSheet.UsedRange.Rows
    If Cells(rw.Row, 1).Borders.LineStyle <> xlNone Then
        MsgBox "Row = " & rw.Row
        Exit For
    End If
Next
 
Зачем вам Goto. Ошибка возникает потому что Row  это ссылка на ячейку Надо так
Код
If Row.Borders.LineStyle <> xlNone Then
Для 1 столбца
Код
Sub dsafa()
Dim Row1 As Range
For Each Row1 In ActiveSheet.UsedRange.Columns(1).Cells
    If Row1.Borders.LineStyle <> xlNone Then MsgBox "Row = " & Row1.Address: Exit For
Next Row1
End Sub

Изменено: Евгений Смирнов - 24.11.2021 09:22:02
 
Коллеги, спасибо за помощь.
Страницы: 1
Наверх