Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];
ВнизУдалить строки Найти похожие ветки
← →
SerJaNT © (2007-08-19 04:37) [0]В файле Excel на листе 1 находится такой текст:
@
текст
@
текст
@
текст
@
текст
текст
текст
текст
@
текст
@
текст
текст
@
Помогите написать макрос VBA который будет удалять строки вида
@
текст
@
т.е. чтобы из вышеприведенного текста получилось такое:
@
текст
текст
текст
текст
@
текст
текст
@
(удаляем строки где между @@ находится всего лишь одна строка).
Написал такой макрос, но вылетает с ошибкой..Dim CurrCellText, CurrCellText2 As String
Dim I, J As Long
J = Selection.Rows.Count
For I = 1 To J Step 1
CurrCellText = Worksheets("Лист1").Cells(I, 1).Value
CurrCellText2 = Worksheets("Лист1").Cells(I + 2, 1).Value
If (InStr(CurrCellText, "@") <> 0) And (InStr(CurrCellText2, "@") <> 0) Then
Rows(I).Select
Selection.Delete
Rows(I + 1).Select
Selection.Delete
I = I - 2
End If
Next I
← →
1233333 (2007-08-19 07:42) [1]Я конечно плохо помню VB, но для начала бы проверил, что строк больше двух, а затем оформил бы цикл примерно так:
For I = J To 3 Step -1
InStr(CurrCellText, "@") <> 0 - это вообще не понятно. Почему бы не сделать просто
CurrCellText="@"?
вобщем я родил такой код:Dim I, J As Long
I = 1
J = Worksheets("Ëèñò1").UsedRange.Rows.Count
While I < J - 2
If (Worksheets("Ëèñò1").Cells(I, 1).Value = "@") And (Worksheets("Ëèñò1").Cells(I + 2, 1).Value = "@") Then
Worksheets("Ëèñò1").Rows(I).Delete
Worksheets("Ëèñò1").Rows(I).Delete
J = Worksheets("Ëèñò1").UsedRange.Rows.Count
Else
I = I + 1
End If
Wend
← →
SerJaNT © (2007-08-19 11:04) [2]> [1] 1233333 (19.08.07 07:42)
Спасибо, огромное!
Все работает как надо! :))
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.04 c