powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Форматирование в excel по условию
3 сообщений из 3, страница 1 из 1
Форматирование в excel по условию
    #35515459
DnG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fast report 3.15 выгружает отчёт в excel
с разделением по страницам, т.е. как страница заканчивается шапка опять рисуется, и страница 2, 3 и т.д.
Пробывал выставлять свойтсво page breaks при экспорте, ничего не помогло, думал может всё одним разом скинет в ексель.
Если нельзя в фаст репорте сделать, может подскажите как отформатировать макросом.
Нужно как то поиском найти все ячейки с заголовками начиная со второго и удалить их. Пробывал записывать макрос, но не знаю как по условию
найти все нужные строчки (шапки) начиная со второй, и затем по этим ячейкам удалить найденные строчки.
Спасибо.
...
Рейтинг: 0 / 0
Форматирование в excel по условию
    #35519197
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Private Sub CommandButton1_Click()

    Dim objFind As Range
    Dim lngRow As Long
    Dim lngRows() As Long
    Dim lngLastRow As Long
    Dim strFirstAddress As String
    Dim strHeaderKeyWord As String
    Dim lngFirstRow As Long
    
    lngLastRow = ThisWorkbook.Worksheets( 1 ).Range("A65536").End(xlUp).Row
    strHeaderKeyWord = "Шапка Моя"
    
'предполагаем шапки в колонке А

    With ThisWorkbook.Worksheets( 1 ).Range("A1:A" & CStr(lngLastRow)) 
            
        Set objFind = .Find(strHeaderKeyWord, LookIn:=xlValues, LookAt:=xlPart)
            
        If Not objFind Is Nothing Then
            lngFirstRow = objFind.Row
        End If
            
    End With
    
    With ThisWorkbook.Worksheets( 1 ).Range("A" & CStr(lngFirstRow +  1 ) & ":A" & CStr(lngLastRow))
        Set objFind = .Find(strHeaderKeyWord, LookIn:=xlValues, LookAt:=xlPart)
        
        If Not objFind Is Nothing Then
            strFirstAddress = objFind.Address
            Do
                ReDim Preserve lngRows(lngRow)
                 lngRows(lngRow) = objFind.Row
                Set objFind = .FindNext(objFind)
                lngRow = lngRow +  1 
            Loop While Not objFind Is Nothing And strFirstAddress <> objFind.Address
        End If
    
    End With

    For lngRow = UBound(lngRows) To LBound(lngRows) Step - 1 
         ThisWorkbook.Worksheets( 1 ).Rows(lngRows(lngRow)).Delete
    Next lngRow
End Sub
...
Рейтинг: 0 / 0
Форматирование в excel по условию
    #35536097
DnG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Private Sub CommandButton1_Click()

    Dim objFind As Range
    Dim lngRow As Long
    Dim lngRows() As Long
    Dim lngLastRow As Long
    Dim strFirstAddress As String
    Dim strHeaderKeyWord As String
    Dim lngFirstRow As Long
    
    lngLastRow = ThisWorkbook.Worksheets( 1 ).Range("A65536").End(xlUp).Row
    strHeaderKeyWord = "Шапка Моя"
    
'предполагаем шапки в колонке А

    With ThisWorkbook.Worksheets( 1 ).Range("A1:A" & CStr(lngLastRow)) 
            
        Set objFind = .Find(strHeaderKeyWord, LookIn:=xlValues, LookAt:=xlPart)
            
        If Not objFind Is Nothing Then
            lngFirstRow = objFind.Row
        End If
            
    End With
    
    With ThisWorkbook.Worksheets( 1 ).Range("A" & CStr(lngFirstRow +  1 ) & ":A" & CStr(lngLastRow))
        Set objFind = .Find(strHeaderKeyWord, LookIn:=xlValues, LookAt:=xlPart)
        
        If Not objFind Is Nothing Then
            strFirstAddress = objFind.Address
            Do
                ReDim Preserve lngRows(lngRow)
                 lngRows(lngRow) = objFind.Row
                Set objFind = .FindNext(objFind)
                lngRow = lngRow +  1 
            Loop While Not objFind Is Nothing And strFirstAddress <> objFind.Address
        End If
    
    End With

    For lngRow = UBound(lngRows) To LBound(lngRows) Step - 1 
         ThisWorkbook.Worksheets( 1 ).Rows(lngRows(lngRow)).Delete
    Next lngRow
End Sub




Ты не мог бы подсказать, возникла ошибка:

Subscript out of range.

вот в этой строчке

For lngRow = UBound(lngRows) To LBound(lngRows) Step -1
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Форматирование в excel по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]