Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2011, 11:07   #1
Kraimon
Пользователь
 
Регистрация: 22.01.2011
Сообщений: 44
По умолчанию Макрос переноса строк работает не корректно

Из-за чего данный макрос может работать не корректно, а именно периодически не переносить строки на другой лист, а заменять?
Цитата:
Private Sub Worksheet_Change(ByVal Target As Range)
With Sheets("Поступили")
.Select
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [a:a]) Is Nothing And Target.Value = "\" Then
.Rows(Target.Row).Copy Sheets("выбыли").Rows(WorksheetFunc tion.CountA(Sheets("выбыли").[a:a]) + 1)
.Rows(Target.Row).Delete
End If
End With
End Sub
Вложения
Тип файла: rar 123.rar (19.6 Кб, 12 просмотров)
Kraimon вне форума Ответить с цитированием
Старый 20.02.2011, 11:18   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
With Sheets("Поступили")
    .Select
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [a:a]) Is Nothing And Target.Value = "\" Then
        .Rows(Target.Row).Copy Sheets("выбыли").Rows(WorksheetFunction.CountA(Sheets("выбыли").[b:b]) + 1)
        .Rows(Target.Row).Delete
    End If
End With
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 20.02.2011, 11:50   #3
Kraimon
Пользователь
 
Регистрация: 22.01.2011
Сообщений: 44
По умолчанию

работает, но если немного изменить строчки, добавить пару столбцов, почему-то опять начинает не добавлсять, а заменять. Макрос немного не стабильный.
Kraimon вне форума Ответить с цитированием
Старый 20.02.2011, 12:11   #4
Kraimon
Пользователь
 
Регистрация: 22.01.2011
Сообщений: 44
По умолчанию опять не работает

в этой таблице не работает
Вложения
Тип файла: rar 1234.rar (22.3 Кб, 11 просмотров)
Kraimon вне форума Ответить с цитированием
Старый 20.02.2011, 12:47   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от Kraimon Посмотреть сообщение
работает, но если немного изменить строчки, добавить пару столбцов, почему-то опять начинает не добавлсять, а заменять. Макрос немного не стабильный.
Вы издеваетесь? Перефразируя известную поговорку:"Неча на макрос пенять, если руки кривые":-) Макрос работает правильно. Он считает к-во непустых ячеек во 2-м столбце и прибавляет к этому 1. После этого в строку с таким номером переносит строку из листа 1. Т.е. чтоб он работал как Вам надо в столбце 2 на листе 2 НЕ ДОЛЖНО быть пропусков. Начните наконец вникать в ВБА. А нет, тогда делайте все руками. Не на что будет жаловаться. Чтоб искала последнюю строку независимо от пустых, можно так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lr&
    lr = Sheets("выбыли").Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
    With ME
        If Target.Count > 1 Then Exit Sub
        If Not Intersect(Target, [a:a]) Is Nothing And Target.Value = "\" Then
            .Rows(Target.Row).Copy Sheets("выбыли").Rows(lr)
            .Rows(Target.Row).Delete
        End If
    End With
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 20.02.2011 в 12:55.
kuklp вне форума Ответить с цитированием
Старый 20.02.2011, 13:12   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Начните наконец вникать в ВБА
)))
а сам сколько вникал? ты на что человека толкаешь?
Цитата:
Вы издеваетесь?
Серега, давно пора привыкнуть, что те, кто знают ВБА (больше или меньше) открывают редактор и крапают потихоньку... с ошибками, с экспериментами...
а те, кто этого не знают - не могут сформулировать вопрос, используя ВБА терминологию, и то, что принципиально важно для корректного функционирования макроса, не обязательно будет даже упомянуто при постановке задачи. грамотное ТЗ здесь такая же редкость, как пингвины на северном полюсе.
Успехов!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 20.02.2011, 13:28   #7
Kraimon
Пользователь
 
Регистрация: 22.01.2011
Сообщений: 44
По умолчанию

Спасибки все работает, еще 1 вопрос, как-то можно совместить эти два макроса?
Цитата:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr&
lr = Sheets("выбыли").Cells.Find(What:=" *", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
With ME
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [a:a]) Is Nothing And Target.Value = "\" Then
.Rows(Target.Row).Copy Sheets("выбыли").Rows(lr)
.Rows(Target.Row).Delete
End If
End With
End Sub
Цитата:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("D1:F500")) Is Nothing Then
Target = StrConv(Target, 3)
End If
End Sub
Kraimon вне форума Ответить с цитированием
Старый 20.02.2011, 13:33   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Не прошло и 20 минут

IgorGO +1000
Игорь,у меня складывается впечатление.что у тебя есть волшебный хрустальный шар.Пора на кастинг в Битву...
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 20.02.2011, 15:15   #9
Kraimon
Пользователь
 
Регистрация: 22.01.2011
Сообщений: 44
По умолчанию

вот что у меня получилось
Цитата:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
On Error Resume Next ' Application.EnableEvents
Application.EnableEvents = False '
If Not Intersect(Target, Range("D1:F500")) Is Nothing Then
Target = StrConv(Target, 3)
End If
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [a:a]) Is Nothing And Target.Value = "\" Then
Target.EntireRow.Copy Sheets("выбыли").Rows(lr)
Target.EntireRow.Delete
End If
Application.EnableEvents = True '
End Sub
но работает не так как надо (
Kraimon вне форума Ответить с цитированием
Старый 20.02.2011, 15:27   #10
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

На коленке, не проверяя:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
On Error Resume Next ' Application.EnableEvents
Application.EnableEvents = False '
If Not Intersect(Target, Range("D1:F500")) Is Nothing Then
Target = StrConv(Target, 3)
Application.EnableEvents = true 'эсли этого не сделать Экс перестанет отслеживать события
Exit Sub ' если первое условие выполнено, незачем проверять второе
End If
'If Target.Count > 1 Then Exit Sub уже проверяли, больше незачем
    Dim lr&
    lr = Sheets("выбыли").Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1 ' эти строки куда подевались?
If Not Intersect(Target, [a:a]) Is Nothing And Target.Value = "\" Then
Target.EntireRow.Copy Sheets("выбыли").Rows(lr)
Target.EntireRow.Delete
End If
Application.EnableEvents = True '
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос переноса строк Extril Microsoft Office Excel 30 25.01.2015 22:15
макрос для переноса введенных данных vostok Microsoft Office Excel 2 27.11.2010 11:16
Макрос для переноса данных в виде таблицы из Excel в Word Jevgeni85 Microsoft Office Excel 2 25.08.2010 16:52
Макрос переноса строк на другой лист cargoline9 Microsoft Office Excel 11 15.12.2009 22:05