Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удалить все строки между ячейками / 18 сообщений из 18, страница 1 из 1
13.09.2009, 18:14
    #36193093
Zerat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Подскажите, пожалуйста, как с помощью макроса, в столбце "B" удалить все строки между двумя ячейками, содержащими слова "Слово1" и "Слово2".
...
Рейтинг: 0 / 0
14.09.2009, 09:11
    #36193436
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim p1 as integer, p2 as integer
Dim i as integer

For i =  1  to  65536 
If cells(i, 2 ).value = "Слово1" then
p1 = i
elseif cells(i, 2 ).value = "Слово2" then
p2 = i
end if
next i

Rows(p1 & ":" & p2).Delete
...
Рейтинг: 0 / 0
14.09.2009, 09:13
    #36193441
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
единственное, слово1 и слово2 должно повторятся по одному разу, в противном случае удаление начнется с последнего повторения слова "слово1" и закончится на позиции последнего слова "слово2"
...
Рейтинг: 0 / 0
14.09.2009, 11:14
    #36193666
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
MaximuS_G,

да, по идее надо искать пары Слово1 и Слово2.
...
Рейтинг: 0 / 0
14.09.2009, 21:12
    #36195247
Zerat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Почему ругается на эту строку?

Rows(p1 & ":" & p2).Delete

Пишет "Can't execute code in break mode".
...
Рейтинг: 0 / 0
15.09.2009, 08:44
    #36195595
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Zerat,

значит у вас программа в режиме отладки, ищите ошибки или брейкпойнты.
...
Рейтинг: 0 / 0
15.09.2009, 08:58
    #36195615
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Zerat,

в определении переменных поменяйте тип на long. Так как integer, это 2 байта и максимальное значение 32767. Кстати, в Excel 2007 - больше 1 млн. строк.
Код: plaintext
1.
Dim p1 as Long, p2 as Long
Dim i as Long
...
Рейтинг: 0 / 0
15.09.2009, 10:11
    #36195782
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
MaximuS_GDim i as integer For i = 1 to 65536
Написал, не подумал :)...
...
Рейтинг: 0 / 0
15.09.2009, 10:40
    #36195878
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test()

Dim p1 As Integer, p2 As Integer

For Each cc In Application.Intersect(Worksheets("Sheet1").Range("b:b"), Worksheets("Sheet1").UsedRange)
If cc.Value = "Слово1" Then
p1 = cc.Row
ElseIf cc.Value = "Слово2" Then
p2 = cc.Row
End If
Next

Rows(p1 & ":" & p2).Delete

End Sub
...
Рейтинг: 0 / 0
15.09.2009, 10:51
    #36195921
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Или даже так, вариант понаглядней
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub test()

Dim p1 As Integer, p2 As Integer

Set Target = ActiveSheet.UsedRange

For Each cc In Target.Columns( 2 ).Cells
If cc.Value = "Слово1" Then
p1 = cc.Row
ElseIf cc.Value = "Слово2" Then
p2 = cc.Row
End If
Next

Rows(p1 & ":" & p2).Delete

End Sub
...
Рейтинг: 0 / 0
15.09.2009, 12:04
    #36196234
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
а объявлять dim cc as range не надо ?..
Просто интересно :)
...
Рейтинг: 0 / 0
15.09.2009, 12:14
    #36196266
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
MaximuS_G,

если нет директивы Option Explicit On , то нет.
Хотя конечно же все переменные надо объявлять явно.
...
Рейтинг: 0 / 0
15.09.2009, 12:23
    #36196293
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Наверное надо, но ведь и так работает.
Пользуясь случаем, раз уж так, немного сократил - работает ):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub test()

For Each cc In ActiveSheet.UsedRange.Columns( 2 ).Cells
If cc.Value = "Слово1" Then
p1 = cc.Row
ElseIf cc.Value = "Слово2" Then
p2 = cc.Row
End If
Next

Rows(p1 & ":" & p2).Delete

End Sub
...
Рейтинг: 0 / 0
15.09.2009, 12:34
    #36196345
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Работает и ещё короче:)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub test()

For Each cc In ActiveSheet.UsedRange.Columns( 2 ).Cells
If cc.Value = "Слово1" Then p1 = cc.Row
If cc.Value = "Слово2" Then p2 = cc.Row
Next

Rows(p1 & ":" & p2).Delete

End Sub
...
Рейтинг: 0 / 0
15.09.2009, 21:07
    #36197846
Zerat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
MaximuS_G, big-duke, спасибо большое. После того как поменял тип переменных на long, заработало.

Hugo121, а у Ваших кодов после запуска выскакивает "Run-time error '13' . Type mismatch".
...
Рейтинг: 0 / 0
16.09.2009, 09:14
    #36198175
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
ZeratHugo121, а у Ваших кодов после запуска выскакивает "Run-time error '13' . Type mismatch". - так и должно быть, если в колонке 2 нет слов "Слово1" и "Слово2", ведь защиты от проверки на ошибки нет :)
Ну вобщем 1.5 секунды (для 2000) конечно не критичны, можно и все ячейки перебирать, но что будет на 2007?
...
Рейтинг: 0 / 0
16.09.2009, 23:20
    #36200235
Zerat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Hugo121ZeratHugo121, а у Ваших кодов после запуска выскакивает "Run-time error '13' . Type mismatch". - так и должно быть, если в колонке 2 нет слов "Слово1" и "Слово2", ведь защиты от проверки на ошибки нет :)
Ну вобщем 1.5 секунды (для 2000) конечно не критичны, можно и все ячейки перебирать, но что будет на 2007?



В том то и дело, что в столбце B есть и Слово1, и Слово2. А ошибка все равно выскакивает.
...
Рейтинг: 0 / 0
16.09.2009, 23:34
    #36200241
H
H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить все строки между ячейками
Zerat
В том то и дело, что в столбце B есть и Слово1, и Слово2. А ошибка все равно выскакивает. - может Option Explicit On ?
Попробуй вначале всёже добавить
Dim p1 As Long, p2 As Long
Dim cc As Range
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удалить все строки между ячейками / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]