Перенос строк по условию
Anis625
Дата: Пятница, 27.04.2018, 17:03 |
Сообщение № 1
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
Добрый день знатокам VBA. В просторах интернета, по-моему, я нашел решение своей задачки - перенос строк по условию - если в строке есть слово "выполнено" или часть этого слова "выполн", НО ...: 1) Не отображается макрос при его вызове Alt+F8 (хотя при просмотре кода его вижу). Возможно дело в Private Sub. Пробовал удалять Private не помогает. В модуль тоже добавлял. Тоже не работает. 2) Я так понял, что макрос не допилинный - так как делает накладку перенесенных данных. Помогите пожалуйста допилить его.
Добрый день знатокам VBA. В просторах интернета, по-моему, я нашел решение своей задачки - перенос строк по условию - если в строке есть слово "выполнено" или часть этого слова "выполн", НО ...: 1) Не отображается макрос при его вызове Alt+F8 (хотя при просмотре кода его вижу). Возможно дело в Private Sub. Пробовал удалять Private не помогает. В модуль тоже добавлял. Тоже не работает. 2) Я так понял, что макрос не допилинный - так как делает накладку перенесенных данных. Помогите пожалуйста допилить его. Anis625
Ответить
Сообщение Добрый день знатокам VBA. В просторах интернета, по-моему, я нашел решение своей задачки - перенос строк по условию - если в строке есть слово "выполнено" или часть этого слова "выполн", НО ...: 1) Не отображается макрос при его вызове Alt+F8 (хотя при просмотре кода его вижу). Возможно дело в Private Sub. Пробовал удалять Private не помогает. В модуль тоже добавлял. Тоже не работает. 2) Я так понял, что макрос не допилинный - так как делает накладку перенесенных данных. Помогите пожалуйста допилить его. Автор - Anis625 Дата добавления - 27.04.2018 в 17:03
Апострофф
Дата: Пятница, 27.04.2018, 18:00 |
Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 448
Репутация:
124
±
Замечаний:
0% ±
Excel 1997
Anis625 , процедуры с параметрами не видны по Alt+F8. А про недопилинность не понял ничего.
Anis625 , процедуры с параметрами не видны по Alt+F8. А про недопилинность не понял ничего.Апострофф
Ответить
Сообщение Anis625 , процедуры с параметрами не видны по Alt+F8. А про недопилинность не понял ничего.Автор - Апострофф Дата добавления - 27.04.2018 в 18:00
Nic70y
Дата: Пятница, 27.04.2018, 18:57 |
Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация:
2273
±
Замечаний:
0% ±
Excel 2010
макрос на событие и сот. не отбражается так и должно быть [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range)
[/vba]причем рабочийну мож тогда так[vba]Код
If Not Intersect(Target, [e:e]) Is Nothing And Left(Target.Value, 3) = "вып" Then
[/vba]
макрос на событие и сот. не отбражается так и должно быть [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range)
[/vba]причем рабочийну мож тогда так[vba]Код
If Not Intersect(Target, [e:e]) Is Nothing And Left(Target.Value, 3) = "вып" Then
[/vba] Nic70y
ЮMoney 41001841029809
Сообщение отредактировал Nic70y - Пятница, 27.04.2018, 18:58
Ответить
Сообщение макрос на событие и сот. не отбражается так и должно быть [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range)
[/vba]причем рабочийну мож тогда так[vba]Код
If Not Intersect(Target, [e:e]) Is Nothing And Left(Target.Value, 3) = "вып" Then
[/vba] Автор - Nic70y Дата добавления - 27.04.2018 в 18:57
Anis625
Дата: Суббота, 28.04.2018, 09:21 |
Сообщение № 4
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
Круууто, благодарю Вас. Точно все работает оказывается. Он получается сразу сносит строку если увидел слово "вып". А можно сделать чтобы все таки с кнопки переносилось?
Круууто, благодарю Вас. Точно все работает оказывается. Он получается сразу сносит строку если увидел слово "вып". А можно сделать чтобы все таки с кнопки переносилось? Anis625
Ответить
Сообщение Круууто, благодарю Вас. Точно все работает оказывается. Он получается сразу сносит строку если увидел слово "вып". А можно сделать чтобы все таки с кнопки переносилось? Автор - Anis625 Дата добавления - 28.04.2018 в 09:21
Anis625
Дата: Суббота, 28.04.2018, 09:28 |
Сообщение № 5
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
If Not Intersect(Target, [e:e]) Is Nothing And Left(Target.Value, 3) = "вып" Then
Правильно будет если заменю код так: [vba]Код
If Not Intersect(Target, [e:e]) Is U.Find("вып") Then
[/vba] чтобы макрос находил слово "вып" внутри текста? Бывает, что слово "выполнено" или "вып" пишется после определенного описания.
If Not Intersect(Target, [e:e]) Is Nothing And Left(Target.Value, 3) = "вып" Then
Правильно будет если заменю код так: [vba]Код
If Not Intersect(Target, [e:e]) Is U.Find("вып") Then
[/vba] чтобы макрос находил слово "вып" внутри текста? Бывает, что слово "выполнено" или "вып" пишется после определенного описания.Anis625
Ответить
Сообщение If Not Intersect(Target, [e:e]) Is Nothing And Left(Target.Value, 3) = "вып" Then
Правильно будет если заменю код так: [vba]Код
If Not Intersect(Target, [e:e]) Is U.Find("вып") Then
[/vba] чтобы макрос находил слово "вып" внутри текста? Бывает, что слово "выполнено" или "вып" пишется после определенного описания.Автор - Anis625 Дата добавления - 28.04.2018 в 09:28
Апострофф
Дата: Суббота, 28.04.2018, 09:28 |
Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 448
Репутация:
124
±
Замечаний:
0% ±
Excel 1997
А можно сделать чтобы все таки с кнопки переносилось?
Перенесите процедуру в обычный модуль. Уберите Private и параметры. Вместо Target просто анализируйте [E:E] ВСЁ!
А можно сделать чтобы все таки с кнопки переносилось?
Перенесите процедуру в обычный модуль. Уберите Private и параметры. Вместо Target просто анализируйте [E:E] ВСЁ!Апострофф
Ответить
Сообщение А можно сделать чтобы все таки с кнопки переносилось?
Перенесите процедуру в обычный модуль. Уберите Private и параметры. Вместо Target просто анализируйте [E:E] ВСЁ!Автор - Апострофф Дата добавления - 28.04.2018 в 09:28
Апострофф
Дата: Суббота, 28.04.2018, 09:36 |
Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 448
Репутация:
124
±
Замечаний:
0% ±
Excel 1997
Бывает, что слово "выполнено" или "вып" пишется после определенного описания.
[vba]Код
If Not Intersect(Target, [e:e]) Is Nothing And INSTR(Target.Value, "вып") Then
[/vba]
Бывает, что слово "выполнено" или "вып" пишется после определенного описания.
[vba]Код
If Not Intersect(Target, [e:e]) Is Nothing And INSTR(Target.Value, "вып") Then
[/vba]Апострофф
Ответить
Сообщение Бывает, что слово "выполнено" или "вып" пишется после определенного описания.
[vba]Код
If Not Intersect(Target, [e:e]) Is Nothing And INSTR(Target.Value, "вып") Then
[/vba]Автор - Апострофф Дата добавления - 28.04.2018 в 09:36
Anis625
Дата: Суббота, 28.04.2018, 11:53 |
Сообщение № 8
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
If Not Intersect(Target, [e:e]) Is Nothing And INSTR(Target.Value, "вып") Then
Эта часть получилась =) Благодарю Вас
If Not Intersect(Target, [e:e]) Is Nothing And INSTR(Target.Value, "вып") Then
Эта часть получилась =) Благодарю ВасAnis625
Ответить
Сообщение If Not Intersect(Target, [e:e]) Is Nothing And INSTR(Target.Value, "вып") Then
Эта часть получилась =) Благодарю ВасАвтор - Anis625 Дата добавления - 28.04.2018 в 11:53
Anis625
Дата: Суббота, 28.04.2018, 11:55 |
Сообщение № 9
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
Перенесите процедуру в обычный модуль. Уберите Private
Эту часть сделал. Теперь при вызове макроса его видно (+ к себе в копилку знаний).Уберите ... и параметры. Вместо Target просто анализируйте [E:E]
А с этой частью не справился =(
Перенесите процедуру в обычный модуль. Уберите Private
Эту часть сделал. Теперь при вызове макроса его видно (+ к себе в копилку знаний).Уберите ... и параметры. Вместо Target просто анализируйте [E:E]
А с этой частью не справился =(Anis625
Ответить
Сообщение Перенесите процедуру в обычный модуль. Уберите Private
Эту часть сделал. Теперь при вызове макроса его видно (+ к себе в копилку знаний).Уберите ... и параметры. Вместо Target просто анализируйте [E:E]
А с этой частью не справился =(Автор - Anis625 Дата добавления - 28.04.2018 в 11:55
Anis625
Дата: Суббота, 28.04.2018, 13:16 |
Сообщение № 10
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
Вместо Target просто анализируйте [E:E]
Убрал Target - выдает ошибку. Похоже не просто удалить нужно
Вместо Target просто анализируйте [E:E]
Убрал Target - выдает ошибку. Похоже не просто удалить нужноAnis625
Ответить
Сообщение Вместо Target просто анализируйте [E:E]
Убрал Target - выдает ошибку. Похоже не просто удалить нужноАвтор - Anis625 Дата добавления - 28.04.2018 в 13:16
StoTisteg
Дата: Суббота, 28.04.2018, 13:24 |
Сообщение № 11
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация:
103
±
Замечаний:
0% ±
Excel 2010
[vba]Код
If ActiveCell.Column = 5 Then
[/vba] То есть вместо Target у Вас теперь ActiveCell.
[vba]Код
If ActiveCell.Column = 5 Then
[/vba] То есть вместо Target у Вас теперь ActiveCell. StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Сообщение отредактировал StoTisteg - Суббота, 28.04.2018, 13:26
Ответить
Сообщение [vba]Код
If ActiveCell.Column = 5 Then
[/vba] То есть вместо Target у Вас теперь ActiveCell. Автор - StoTisteg Дата добавления - 28.04.2018 в 13:24
Anis625
Дата: Суббота, 28.04.2018, 14:18 |
Сообщение № 12
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
То есть вместо Target у Вас теперь ActiveCell.
[vba]Код
Sub Worksheet_Change() With Sheets("Задания") .Select If ActiveCell.Column = 5 Then Exit Sub If Not Intersect(ActiveCell, [e:e]) Is Nothing And InStr(ActiveCell.Value, "вып") Then .Rows(ActiveCell.Row).Copy Sheets("Архив").Rows(WorksheetFunction.CountA(Sheets("Архив").[a:a]) + 1) .Rows(ActiveCell.Row).Delete End If End With End Sub
[/vba] не работает макрос =(
То есть вместо Target у Вас теперь ActiveCell.
[vba]Код
Sub Worksheet_Change() With Sheets("Задания") .Select If ActiveCell.Column = 5 Then Exit Sub If Not Intersect(ActiveCell, [e:e]) Is Nothing And InStr(ActiveCell.Value, "вып") Then .Rows(ActiveCell.Row).Copy Sheets("Архив").Rows(WorksheetFunction.CountA(Sheets("Архив").[a:a]) + 1) .Rows(ActiveCell.Row).Delete End If End With End Sub
[/vba] не работает макрос =(Anis625
Ответить
Сообщение То есть вместо Target у Вас теперь ActiveCell.
[vba]Код
Sub Worksheet_Change() With Sheets("Задания") .Select If ActiveCell.Column = 5 Then Exit Sub If Not Intersect(ActiveCell, [e:e]) Is Nothing And InStr(ActiveCell.Value, "вып") Then .Rows(ActiveCell.Row).Copy Sheets("Архив").Rows(WorksheetFunction.CountA(Sheets("Архив").[a:a]) + 1) .Rows(ActiveCell.Row).Delete End If End With End Sub
[/vba] не работает макрос =(Автор - Anis625 Дата добавления - 28.04.2018 в 14:18
Апострофф
Дата: Суббота, 28.04.2018, 14:30 |
Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 448
Репутация:
124
±
Замечаний:
0% ±
Excel 1997
А с чего он будет работать, если есть Exit Sub для любой активной ячейки из .Column = 5, т.е. из столбца [E:E]?
А с чего он будет работать, если есть Exit Sub для любой активной ячейки из .Column = 5, т.е. из столбца [E:E]?Апострофф
Ответить
Сообщение А с чего он будет работать, если есть Exit Sub для любой активной ячейки из .Column = 5, т.е. из столбца [E:E]?Автор - Апострофф Дата добавления - 28.04.2018 в 14:30
Anis625
Дата: Суббота, 28.04.2018, 14:47 |
Сообщение № 14
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
А с чего он будет работать, если есть Exit Sub для любой активной ячейки из .Column = 5, т.е. из столбца [E:E]?
Удалил - ошибку выдает Убрал End With - опять ошибку выдает
А с чего он будет работать, если есть Exit Sub для любой активной ячейки из .Column = 5, т.е. из столбца [E:E]?
Удалил - ошибку выдает Убрал End With - опять ошибку выдаетAnis625
Ответить
Сообщение А с чего он будет работать, если есть Exit Sub для любой активной ячейки из .Column = 5, т.е. из столбца [E:E]?
Удалил - ошибку выдает Убрал End With - опять ошибку выдаетАвтор - Anis625 Дата добавления - 28.04.2018 в 14:47
StoTisteg
Дата: Суббота, 28.04.2018, 14:53 |
Сообщение № 15
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация:
103
±
Замечаний:
0% ±
Excel 2010
[vba]Код
Sub Worksheet_Change() Sheets("Задания").Activate If ActiveCell.Column = 5 And InStr(ActiveCell.Value, "вып") Then .Rows(ActiveCell.Row).Copy Destination:=Sheets("Архив").Rows(WorksheetFunction.CountA(Sheets("Архив").[a:a]) + 1) .Rows(ActiveCell.Row).Delete End If End Sub
[/vba] Так?
[vba]Код
Sub Worksheet_Change() Sheets("Задания").Activate If ActiveCell.Column = 5 And InStr(ActiveCell.Value, "вып") Then .Rows(ActiveCell.Row).Copy Destination:=Sheets("Архив").Rows(WorksheetFunction.CountA(Sheets("Архив").[a:a]) + 1) .Rows(ActiveCell.Row).Delete End If End Sub
[/vba] Так? StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Ответить
Сообщение [vba]Код
Sub Worksheet_Change() Sheets("Задания").Activate If ActiveCell.Column = 5 And InStr(ActiveCell.Value, "вып") Then .Rows(ActiveCell.Row).Copy Destination:=Sheets("Архив").Rows(WorksheetFunction.CountA(Sheets("Архив").[a:a]) + 1) .Rows(ActiveCell.Row).Delete End If End Sub
[/vba] Так? Автор - StoTisteg Дата добавления - 28.04.2018 в 14:53
Anis625
Дата: Суббота, 28.04.2018, 15:00 |
Сообщение № 16
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
Ответить
Сообщение "ругается" на .RowsАвтор - Anis625 Дата добавления - 28.04.2018 в 15:00
StoTisteg
Дата: Суббота, 28.04.2018, 15:05 |
Сообщение № 17
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация:
103
±
Замечаний:
0% ±
Excel 2010
А. Точки перед ними убрать забыл... [vba]Код
Sub Worksheet_Change() Sheets("Задания").Activate If ActiveCell.Column = 5 And InStr(ActiveCell.Value, "вып") Then Rows(ActiveCell.Row).Copy Destination:=Sheets("Архив").Rows(WorksheetFunction.CountA(Sheets("Архив").[a:a]) + 1) Rows(ActiveCell.Row).Delete End If End Sub
[/vba]
А. Точки перед ними убрать забыл... [vba]Код
Sub Worksheet_Change() Sheets("Задания").Activate If ActiveCell.Column = 5 And InStr(ActiveCell.Value, "вып") Then Rows(ActiveCell.Row).Copy Destination:=Sheets("Архив").Rows(WorksheetFunction.CountA(Sheets("Архив").[a:a]) + 1) Rows(ActiveCell.Row).Delete End If End Sub
[/vba] StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Ответить
Сообщение А. Точки перед ними убрать забыл... [vba]Код
Sub Worksheet_Change() Sheets("Задания").Activate If ActiveCell.Column = 5 And InStr(ActiveCell.Value, "вып") Then Rows(ActiveCell.Row).Copy Destination:=Sheets("Архив").Rows(WorksheetFunction.CountA(Sheets("Архив").[a:a]) + 1) Rows(ActiveCell.Row).Delete End If End Sub
[/vba] Автор - StoTisteg Дата добавления - 28.04.2018 в 15:05
Anis625
Дата: Суббота, 28.04.2018, 15:27 |
Сообщение № 18
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация:
31
±
Замечаний:
20% ±
Excel 2013
Точки перед ними убрать забыл...
Я тоже пробовал убирать. Не срабатывает =(
Точки перед ними убрать забыл...
Я тоже пробовал убирать. Не срабатывает =(Anis625
Ответить
Сообщение Точки перед ними убрать забыл...
Я тоже пробовал убирать. Не срабатывает =(Автор - Anis625 Дата добавления - 28.04.2018 в 15:27
StoTisteg
Дата: Суббота, 28.04.2018, 15:47 |
Сообщение № 19
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация:
103
±
Замечаний:
0% ±
Excel 2010
Тогда колитесь, что именно пишет.
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Ответить
Сообщение Тогда колитесь, что именно пишет. Автор - StoTisteg Дата добавления - 28.04.2018 в 15:47
StoTisteg
Дата: Суббота, 28.04.2018, 15:51 |
Сообщение № 20
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация:
103
±
Замечаний:
0% ±
Excel 2010
Попробуем эту головоломку упростить: [vba]Код
Sub Worksheet_Change() Sheets("Задания").Activate If ActiveCell.Column = 5 And InStr(ActiveCell.Value, "вып") Then With Sheets("Архив") Rows(ActiveCell.Row).Copy Destination:=.Rows(.Cells(Rows.Count,1).End(xlUp).row + 1) end with Rows(ActiveCell.Row).Delete End If End Sub
[/vba]
Попробуем эту головоломку упростить: [vba]Код
Sub Worksheet_Change() Sheets("Задания").Activate If ActiveCell.Column = 5 And InStr(ActiveCell.Value, "вып") Then With Sheets("Архив") Rows(ActiveCell.Row).Copy Destination:=.Rows(.Cells(Rows.Count,1).End(xlUp).row + 1) end with Rows(ActiveCell.Row).Delete End If End Sub
[/vba] StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Ответить
Сообщение Попробуем эту головоломку упростить: [vba]Код
Sub Worksheet_Change() Sheets("Задания").Activate If ActiveCell.Column = 5 And InStr(ActiveCell.Value, "вып") Then With Sheets("Архив") Rows(ActiveCell.Row).Copy Destination:=.Rows(.Cells(Rows.Count,1).End(xlUp).row + 1) end with Rows(ActiveCell.Row).Delete End If End Sub
[/vba] Автор - StoTisteg Дата добавления - 28.04.2018 в 15:51