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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2012, 01:45   #1
dmonco
 
Регистрация: 23.03.2012
Сообщений: 6
По умолчанию Макрос прибавления

Добрый день.
Помогите с очень простым вопросом.
Нужен макрос, при запуске которого будет прибавляться 10% к сумме в колонке J, и сюда же в колонку J будет записываться результат.
Я пытаюсь что-то составить, но не уверен, что на правильном пути

Код:
Sub AddJcolumn()
  Dim r As Long
  For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(r, 10) != "" Then (Cells(r, 10)*10/100)+Cells(r, 10)
  Next
End Sub
P.S. Я учусь, поэтому нужен именно макрос, а не формулы, выделения, и т.д.
dmonco вне форума Ответить с цитированием
Старый 28.07.2012, 02:00   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub AddJcolumn()
    Dim r As Long
    For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        ' если в ячейке число (больше нуля), то добавляем 10% (умножаем на 1.1)
        If Val(Cells(r, 10)) > 0 Then Cells(r, 10) = Val(Cells(r, 10)) * 1.1
    Next
End Sub
PS:
можно и так написать:
Код:
 If Cells(r, 10) > 0 Then Cells(r, 10) = Cells(r, 10) * 1.1
но, если в ячейке будет не число, а текст, макрос вылетит с ошибкой.
поэтому я преобразую содержимое ячейки в число при помощи функции VAL() перед сравнением или умножением

Последний раз редактировалось EducatedFool; 28.07.2012 в 02:02.
EducatedFool вне форума Ответить с цитированием
Старый 28.07.2012, 02:09   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Есть ещё один способ - несколько более загадочный, но работает быстрее для большого числа ячеек:
Код:
Sub Макрос1()
    ' пишем в любую ячейку (например, в ячейку B5) коэффициент 1.1
    [b5] = 1.1
    ' копируем эту ячейку
    [b5].Copy
    ' используем специальную вставку с опцией «умножить»
    Range([j1], Range("j" & Rows.Count).End(xlUp)).PasteSpecial Operation:=xlMultiply
    ' стираем коэффициент (он нам больше не нужен)
    Range("b5") = ""
    ' выключаем режим копирования
    Application.CutCopyMode = False
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 28.07.2012, 02:56   #4
dmonco
 
Регистрация: 23.03.2012
Сообщений: 6
По умолчанию

Круто. Спасибо большое. Сейчас буду практиковать.
dmonco вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос постоянно обрабатывает события. При открытии другой книги макрос обрывается. Ples Microsoft Office Excel 8 17.12.2016 18:15
Мне чисто для озакомления и прибавления опыта не могли вы бы скинуть ссылку на маааленкий троянчик или сами напишите мало же. Artem_host Общие вопросы Delphi 6 31.01.2012 22:08
Exel - при открытии файла через макрос, если файл отсутствует - виснет весь макрос gregory1b Microsoft Office Excel 2 14.10.2010 11:51
Макрос, запускающий макрос из другого закрытого файла petruha Microsoft Office Excel 7 14.03.2010 11:31
Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос as-is Microsoft Office Excel 4 25.02.2010 07:51