Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Вниз

Знатокам VBA   Найти похожие ветки 

 
SerJaNT ©   (2007-08-06 05:09) [0]

Встала задача написать скрипт на VBA, но столкнулся с проблемой((

В документе Excel на листе "Лист1" находится такой текст:

@
Заголовок1
Документ1 bla bla bla
Документ2 bla bla bla
@
Заголовок2
Документ1 bla bla bla
Документ2 bla bla bla
@
Заголовок3
Документ1 bla bla bla
Документ2 bla bla bla
Документ3 bla bla bla
Документ4 bla bla bla
Изображение1 bla bla bla
Изображение2 bla bla bla
@

Задача состоит в следующем:
необходимо сгруппировать строки после ЗаголовокN и до первого символа @ т.е. строки где встречаются слова "Документ" и "Изображение".
Написал такой скрипт:

(Перед выполнением необходимо выделить ВСЕ строки с данными)

Sub Группировка()

Dim I, J, StartBlockIndex, EndBlockIndex As Integer
Dim CurrCellText As String

StartBlockIndex = 3
EndBlockIndex = 1

" кол-во выделенных строк
J = Selection.Rows.Count

For I = 1 To J Step 1
 " получаем текст в текущей ячейке
 CurrCellText = Worksheets("Лист1").Cells(I, 1).Value

 If CurrCellText = "" Then Exit For

 " определяем номер строки с которой начинаем группировку
 If CurrCellText = "@" Then
   StartBlockIndex = I + 2
 End If

 " определяем номер последней строки блока для группировки
 If (InStr(CurrCellText, "Юнита") <> 0) Or (InStr(CurrCellText, "Модуль") <> 0) Then
   EndBlockIndex = I
 Else
 Worksheets("Лист1").Rows(StartBlockIndex & ":" & EndBlockIndex).Select
   " группируем выделенные строки
   Selection.Rows.Group
 End If
Next I

End Sub


После выполнения получается такое... Никогда на vba не писал, уже третий день пытаюсь...
Помогите, пожалуйста найти где ошибка в моем макросе.


 
МихаилМ   (2007-08-06 09:40) [1]

Ошибка в том, что вопрос на этом языке стоит задавать на сайте SQL.RU :)


 
AZIZE ©   (2007-08-06 09:52) [2]


> Никогда на vba не писал

и правильно делал


 
umbra ©   (2007-08-06 11:28) [3]


> В документе Excel на листе "Лист1" находится такой текст:
>
>

всегда в одном и том же месте?


 
umbra ©   (2007-08-06 12:25) [4]

вот, правла не тестировал :)
Dim firstcell as Range, mycell as range, myrange as range, prevrow as integer

set firstcell = thisWorkbook.Worksheets("Лист1").Cells.Find What:="@", LookIn:=xlValues, LookAt:=xlRows
if not firstcell is Nothing then
 Set Myrange = thisWorkbook.Worksheets("Лист1").Cells.Columns(firstcell.Column)
 set mycell = firstcell
 prevrow = mycell.Row
 Set MyCell = myrange.Find What:="@", LookIn:=xlValues, LookAt:=xlRows
 if not mycell is Nothing then
   do
     with myrange
        .Range(.Cells(prevrow + 1, 1), .Cells(mycell.Row - 1, 1).Group
        prevrow = mycell.Row
        Set MyCell = FindNext After:=mycell
     end with
   loop until mycell is Nothing or mycell.Row = firstcell.Row    
 end if
end if



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.047 c
2-1185991030
Comp
2007-08-01 21:57
2007.09.02
Создать нечто подобное StringGrid на API


2-1186492191
poroshm
2007-08-07 17:09
2007.09.02
не могу использовать RandomFrom почему?


2-1186646635
Axon
2007-08-09 12:03
2007.09.02
Поменять курсор


2-1186570746
loeg
2007-08-08 14:59
2007.09.02
Memo и WebBrowser


15-1185965081
rebroff
2007-08-01 14:44
2007.09.02
Помогите адекватно оценить комплектующие





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский