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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2009, 18:38   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию Как произвести простые вычисления ячеек в VB

Подскажите как написать формулу, например сумма значений ячеек A1;A3
или A1+A3 –A5 в TextBox

Например так, но это не правильно.
Код:
TextBox3 = .Range("E19 + E30")

Последний раз редактировалось segail; 09.08.2009 в 18:59.
segail вне форума Ответить с цитированием
Старый 09.08.2009, 19:14   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Например так, но это не правильно.
Конечно, неправильно.
Может, пора уже начать изучать синтаксис VBA?

Код:
    TextBox3 = [e11] + [e22] - [e19]
    TextBox3 = WorksheetFunction.Sum([e11:e15])
    TextBox3 = WorksheetFunction.Sum([e11:e15, e22:e24])
EducatedFool вне форума Ответить с цитированием
Старый 09.08.2009, 19:26   #3
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Время нет для изучения. Все урывками. Хотя дали одно пособие, почитаю.

А десятичные значения преобразовать в целые
Если в е11 значение= 0,1 а в е15 значение= 0,5
segail вне форума Ответить с цитированием
Старый 09.08.2009, 19:36   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А десятичные значения преобразовать в целые
Если в е11 значение= 0,1 а в е15 значение= 0,5
Во что надо преобразовать указанные значения?
0,1 в 0 или в 1?
0,5 в 0 или в 1?
EducatedFool вне форума Ответить с цитированием
Старый 09.08.2009, 19:59   #5
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Да нет. Например, в ячейках числа имеют число десятичных знаков 2.
В ячейках это будет выглядеть так 0,11 и 0,51. На самом деле скрытые значения в ячейках 0,1124578922 и 0,567893450987. Дело в том, что в TextBox заносится сумма двух значений 0,68035134318. Преобразовывать данные числа в целые можно, не теряя полного значения для дальнейших вычислений?
Код:
With Sheets("Отчет")
        TextBox1 = .Range("E38").Text
        TextBox2 = .Range("H38").Text
        TextBox3 = WorksheetFunction.Sum([e19:e30])

        '...
        
        TextBox5 = .Range("E25").Text
        TextBox6 = .Range("H25").Text
        End With
segail вне форума Ответить с цитированием
Старый 09.08.2009, 20:04   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте так:
Код:
Sub test()
    With Sheets("Отчет")
        TextBox1 = Round(.Range("E38"), 2) ' 2 цифры после запятой
        TextBox2 = Round(.Range("H38"), 0) ' только целая часть числа
        
        TextBox2 = Format(.Range("H38"), "0.00") ' или так
        TextBox3 = WorksheetFunction.Sum(.[e19:e30]) ' не забываем про точку перед ссылкой на ячейки
        
        TextBox5 = .Range("E25").Text
        ' а если использовать свойство TEXT, получите только 2 цифры после запятой (как отображается в ячейке)
    End With
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 09.08.2009, 20:18   #7
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

А эту сумму значений
Код:
TextBox3 = WorksheetFunction.Sum(.[e19:e30])
Так не подходит
Код:
TextBox3 = WorksheetFunction.Sum((.[e19:e30]),0)
segail вне форума Ответить с цитированием
Старый 09.08.2009, 20:39   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Так не подходит
И не подойдёт.
Смотрите внимательнее на приведённые мной примеры, и изучайте синтаксис VB.

Если мы заменили .Range("H38") на Round(.Range("H38"), 0),
то на что надо заменить WorksheetFunction.Sum(.[e19:e30])?
EducatedFool вне форума Ответить с цитированием
Старый 09.08.2009, 20:56   #9
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Наверно так. Если не правильно, то у меня работает
Код:
TextBox7 = Round(WorksheetFunction.Sum(.[e19:e30]), 0)
segail вне форума Ответить с цитированием
Старый 26.10.2009, 20:32   #10
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Здравствуйте.
Подскажите как данную формулу перевести в VB.
Код:
="Потери  "&ЕСЛИ(G1:G31=0;0;(G1:G31/C1:C31)*-100)&" %"
Только диапазон ячеек, это найденный диапазон i+31 столбца 3 и i+31 столбца 6
segail вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисления и изменения ячеек в dbgrid Mayday_007 БД в Delphi 5 29.05.2009 00:37
Простые числа как двоичные палиндромы Sasha_Smirnov Microsoft Office Word 2 30.12.2008 01:11
Не знаю как реализовать вычисления Дмитрий D БД в Delphi 3 06.06.2008 08:58
Как произвести замену всех двузначных чисел на "00число которое заменено" ВЯЧ Microsoft Office Excel 5 06.12.2006 01:02