Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Перемножить две ячейки
 
Добрый вечер. Собрал вот такую процедуру:
           
  Private Sub CommandButton1_Click()
   СтрокаСчета = 3
   Do While Sheets("Счета").Cells(СтрокаСчета, 2) <> ""
       Sheets("Счета").Rows(СтрокаСчета).Select
        If Sheets("Счета").Cells(СтрокаСчета, 2).Interior.Color = RGB(255, 255, 255) Then
           Артикул = Sheets("Счета").Cells(СтрокаСчета, 1)
           СтрокаБД = 3
           Do While Sheets("БД").Cells(СтрокаБД, 1) <> ""
               If Sheets("БД").Cells(СтрокаБД, 3) = Артикул Then
                   Sheets("Счета").Cells(СтрокаСчета, 5) = Sheets("БД").Cells(СтрокаБД, 13)                    
                   Sheets("Счета").Cells(СтрокаСчета, 10) = Sheets("БД").Cells(СтрокаБД, 10)                    
                   Sheets("Счета").Cells(СтрокаСчета, 11) = Sheets("Счета").Cells(СтрокаСчета, 4) * 2
                   Exit Do
               End If
               СтрокаБД = СтрокаБД + 1
           Loop
       End If
       СтрокаСчета = СтрокаСчета + 1
   Loop
End Sub

при умножении: Sheets("Счета").Cells(СтрокаСчета, 11) = Sheets("Счета").Cells(СтрокаСчета, 4) * 2 все нормально.Но мне надо перемножить значения Sheets("Счета").Cells(СтрокаСчета, 4) и Sheets("Счета").Cells(СтрокаСчета, 10). А так не работает.
Пожалуйста подскажите как надо правильно.
И еще: Как правильно обнулить ячейки на листе "Счета" со строки 3 в столбцах 5-12 в этом коде перед запуском?
Вообще-то такая структура кода работает довольно медленно. Почему?
 
Николай Малыгин, у Вас 62 сообщения на форуме, а Вы до сих пор не знаете, что код можно(и нужно) оформлять тегами. А еще нужно выкладывать пример в файле Эксель. Может заглянете в Правила, ознакомитесь...
Я сам - дурнее всякого примера! ...
 
Прочитал еще раз правила. Про теги к кодам не нашел ни слова. Вроде многие так обращаются и никто не возражает. Если про обращения, то за 3 года просил просьбу считанное кол-во раз. Когда начинает напрягать начальство. Нанять знатока и платить не хотят, считают что я справлюсь. Вот и выкручиваюсь, когда прижмет. Сейчас в очередной раз. Повторяю, что я пользуюсь Exsel по необходимости. Моя работа- SolidWorks. Пример прикладываю
 
Цитата
Про теги к кодам не нашел ни слова.
Я персонально прошу Вас оформить код тегом. Этого достаточно?
 
1. Логично, что не работает. Т.к. умножать число на ничто не дозволено ни в одной программе. Либо пишите нули, либо проверяйте на пусто, либо преобразуйте на лету:
Код
Sheets("Счета").Cells(СтрокаСчета, 11) = Val(Sheets("Счета").Cells(СтрокаСчета, 4)) * Val(Sheets("Счета").Cells(СтрокаСчета, 10))


2. Оформление тегами кодов это признак хорошего тона. Вот Вам удобно читать свой код без тегов? Мне не очень. Поэтому лучше привыкать - это несложно и это вовсе не повод для перебранок. Если тег есть - почему бы не использовать для удобочитаемости?
3. То, что Вы используете Excel по необходимости ни в коем разе не означает, что Вам обязаны помочь. Все ведь на добровольной основе и лишний раз подчеркивать, что Excel Вам далек совершенно излишне. Лишь может несколько негативно настроить, т.к. очень смахивает на какую-то жалобщину. Имейте ввиду.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Прошу Вас показать правила оформления кодов тегами. Я не понимаю о чем речь
 
Вы кнопочки вверху окна создания сообщения не видели? Там есть такой: <..>
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Я о примере насчет правил. А о тегах, что тоже надо в Правилах написать? Еще о чем? Тогда Вам чтения правил до пенсии хватит. Попробуйте:
Код
                If Sheets("БД").Cells(СтрокаБД, 3) = Артикул Then
                    With Sheets("Счета")
                        .Cells(СтрокаСчета, 5) = Sheets("БД").Cells(СтрокаБД, 13)
                        .Cells(СтрокаСчета, 7) = Sheets("БД").Cells(СтрокаБД, 14)
                        .Cells(СтрокаСчета, 9) = Sheets("БД").Cells(СтрокаБД, 15)
                        .Cells(СтрокаСчета, 10) = Sheets("БД").Cells(СтрокаБД, 10)
                        .Cells(СтрокаСчета, 6) = .Cells(СтрокаСчета, 4)
                        .Cells(СтрокаСчета, 8) = .Cells(СтрокаСчета, 4)
                        .Cells(СтрокаСчета, 11).Value = .Cells(СтрокаСчета, 4).Value _
                        * Val(.Cells(СтрокаСчета, 10))
                    End With
                    Exit Do
                End If

P.S. код можно ускорить, но мне пока некогда.
Изменено: KuklP - 16 Авг 2013 21:55:24
Я сам - дурнее всякого примера! ...
 
Про "Там есть такой: <..>" честно пока не нашел. При создании темы есть "Добавить теги" Это оно? Спасибо
 
Так понятно?
Я сам - дурнее всякого примера! ...
 
Ну раз не видите...Покажу наглядно, скрином(во вложении).
Что насчет непосредственно вопроса темы? Вам уже два человека ответ дали - ноль эмоций.
answer.gif (5.76 КБ)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ответы только сейчас пришли. Заработало. Я пробовал так до этого, но не туда втыкал оператор. Теперь знаю, как  пользоваться тегами. Спасибо Вам Всем за помощь. Для решения всей проблемы еще много чего потребуется. Постараюсь справляться сам, когда смогу. Не выйдет, не обессудьте. Снова вернусь к Вам
 
Цитата
Теперь знаю, как  пользоваться тегами
Чем докажете? Ваш код пока так и остался неухоженным)
 
По крайней мере уже считает. Про остальное вроде пока "нет времени". Дальше надо будет выбирать уникальные по столбцам 5, 7, 9 с суммой по метрам. Но наверно лучше сделать это заранее.
 
Что значит надо будет выбирать уникальные? Какое отношение это имеет к данной теме?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Нет конечно. Просто советуюсь про очередность выбора уникальных. Попробую сам. Решения на форуме про это есть.
 
Попробуйте так

With Sheets("Счета")
.Cells(СтрокаСчета, 11)=WorksheetFunction.Product(.Cells(СтрокаСчета, 4),.Cells(СтрокаСчета, 10))
End With
 
Добрый вечер. только сейчас прочел и попробовал. Тоже множит, спасибо.
 
Предлагаю убрать внутренний цикл:
Скрытый текст
Изменено: KuklP - 17 Авг 2013 20:45:06
Я сам - дурнее всякого примера! ...
 
Здорово. Работа глазу незаметна. Займусь чтением кода. Благодаря Вам уже что-то начинаю понимать. Огромное спасибо
 
Просмотрел код. Даже для меня легко читается. Еще раз Спасибо
Страницы: 1
Читают тему (гостей: 1)