Главная страница
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.02 c
15-1187354195
@!!ex
2007-08-17 16:36
2007.09.16
Подскажите софт.


15-1187347939
Vrangel
2007-08-17 14:52
2007.09.16
Решение простой задачи?


15-1185519092
БарЛог
2007-07-27 10:51
2007.09.16
Командная строка Windows


3-1179329587
Sashok2007
2007-05-16 19:33
2007.09.16
Клиент-серверное приложение


2-1187690877
ILPU
2007-08-21 14:07
2007.09.16
Нужна помощь!