Главная страница
    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.44 MB
Время: 0.047 c
15-1187663110
Engine1
2007-08-21 06:25
2007.09.16
Как числа Single и Double представлены с точки зрения бит?


15-1184229560
evvcom
2007-07-12 12:39
2007.09.16
FMP (Феодосия Мастак Пати)


8-1165417477
algol
2006-12-06 18:04
2007.09.16
Разобрать медиа файл и построить спектр


9-1159867542
codent
2006-10-03 13:25
2007.09.16
Как делать игры


3-1179321528
DmitrichJ
2007-05-16 17:18
2007.09.16
Access. Работа с таблицами $





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский