Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Форматирование в excel по условию / 3 сообщений из 3, страница 1 из 1
01.09.2008, 10:26
    #35515459
DnG
DnG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование в excel по условию
Fast report 3.15 выгружает отчёт в excel
с разделением по страницам, т.е. как страница заканчивается шапка опять рисуется, и страница 2, 3 и т.д.
Пробывал выставлять свойтсво page breaks при экспорте, ничего не помогло, думал может всё одним разом скинет в ексель.
Если нельзя в фаст репорте сделать, может подскажите как отформатировать макросом.
Нужно как то поиском найти все ячейки с заголовками начиная со второго и удалить их. Пробывал записывать макрос, но не знаю как по условию
найти все нужные строчки (шапки) начиная со второй, и затем по этим ячейкам удалить найденные строчки.
Спасибо.
...
Рейтинг: 0 / 0
02.09.2008, 23:35
    #35519197
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование в excel по условию
Код: 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
12.09.2008, 12:10
    #35536097
DnG
DnG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование в excel по условию
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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Форматирование в excel по условию / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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