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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2012, 12:12   #1
Klubnik
 
Регистрация: 08.12.2011
Сообщений: 4
По умолчанию Макрос с условием

Здраствуйте.
Не могу разобратся с макросом который мог бы копирвать данные по условию.
То что есть во вложении - написано макрорекодером.
Может кто подскажет?
Вложения
Тип файла: rar Книга1.rar (6.2 Кб, 16 просмотров)

Последний раз редактировалось Klubnik; 20.01.2012 в 12:22.
Klubnik вне форума Ответить с цитированием
Старый 21.01.2012, 09:50   #2
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Код:
Sub Макрос1()
 M = Range("B15:G19")
   For R = 1 To 5
        For C = 1 To 3
            If M(R, 6) <> 0 Then Cells(R + 4, C + 1) = M(R, C)
Next C, R
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 21.01.2012, 11:05   #3
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

alex, не слишком ли примитивно?

Код:
Sub Макрос1()
 M = Range("B15:G19")
 For R = 1 To UBound(M)
    If M(R, 6) = 0 Then
        For C = 1 To 3
            M(R, C) = Empty
        Next
    End If
Next
[b5].Resize(UBound(M), 3) = M
End Sub
это уж если с массивом( а оно и правильно, особенно для больших объемов.
Но для учебных целей можно и просто с ячейками. Но тогда так:
Код:
Sub macro2()
Dim r, c
With Range("B15:d19")
    For Each c In Range("g15:g19")
        If c <> 0 Then .Rows(c.Row - .Row + 1).Copy Range("b" & c.Row - 10)
    Next
End With
End Sub
здесь и знания есть где показать - вон сколько разных способов работы с ячейками

Последний раз редактировалось slan; 21.01.2012 в 11:10. Причина: код
slan вне форума Ответить с цитированием
Старый 21.01.2012, 12:16   #4
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Кто бы спорил!
Разумеется ваши примеры не примитвны, а наоборот пример для подражания.
Буду учиться у вас.
У меня в одном примере показано и принцип работы с массивами и с ячейками.
И пусть ТС сам выберет нужное ему
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 21.01.2012, 12:23   #5
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

не обижайтесь, меня просто удивило зачем переписывать каждую ячейку, если есть массив
slan вне форума Ответить с цитированием
Старый 21.01.2012, 12:29   #6
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

и еще каждый раз проверять равенство нулю..
slan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос с условием Klubnik Фриланс 3 20.01.2012 13:38
Макрос: копирование строки с условием MaxxVer Microsoft Office Excel 9 05.12.2011 21:54
макрос с условием deemka777 Microsoft Office Excel 3 03.12.2011 17:38
макрос с условием aoaoo Microsoft Office Excel 6 15.07.2011 05:28
Копирование с условием (Макрос Excel) Gvaridos Microsoft Office Excel 0 09.12.2010 11:44