Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.16;
Скачать: CL | DM;

Вниз

Удалить строки   Найти похожие ветки 

 
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("&#203;&#232;&#241;&#242;1").UsedRange.Rows.Count
   While I < J - 2
       If (Worksheets("&#203;&#232;&#241;&#242;1").Cells(I, 1).Value = "@") And (Worksheets("&#203;&#232;&#241;&#242;1").Cells(I + 2, 1).Value = "@") Then
           Worksheets("&#203;&#232;&#241;&#242;1").Rows(I).Delete
           Worksheets("&#203;&#232;&#241;&#242;1").Rows(I).Delete
           J = Worksheets("&#203;&#232;&#241;&#242;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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.03 c
15-1187341097
ajlekceu
2007-08-17 12:58
2007.09.16
Как заставить DOS-приложение работать быстрее?


15-1187333519
lehich
2007-08-17 10:51
2007.09.16
6+5+4+3+2+1=????


9-1160220897
alpha5
2006-10-07 15:34
2007.09.16
Углы поворота


2-1187604435
vitv
2007-08-20 14:07
2007.09.16
Ошибка при открытии файла


2-1187643455
wp2
2007-08-21 00:57
2007.09.16
Как загрузить Rich-тест в компонент TRichEdit на этапе проэктир..