Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Kapustyanka
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 10
1

Функция в функции VBA

11.01.2011, 12:26. Просмотров 1862. Ответов 11
Метки нет (Все метки)

1)Даны числа a,b,c . Вычислить:
Z = (max(a * b, a * c, b * c) - Min(a, b, a * b * c)) / max((a + b), b * c, a * c)

Function Z(a, b, c) As Single
Z = (max(a * b, a * c, b * c) - Min(a, b, a * b * c)) / max((a + b), b * c, a * c)
End Function
Private Sub CommandButton1_Click()
Dim a As Single, b As Single, c As Single, y As Single
a = TextBox1.Text
b = TextBox2.Text
c = TextBox3.Text
y = Z(a, b, c)
End Sub


чего ему? =( как это сделать иначе?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2011, 12:26
Ответы с готовыми решениями:

Функция VBA
Ребята подскажите что делает функция bush и helper.

Функция в VBA
помогите найти ошибку

функция в VBA
Помогите,пожалуйста, разобраться с заданием=) f(x)=0 на интервале -10 до...

Функция S в VBA
Прикрепил архив, в котором есть почти решенная задача. Нужно еще с помощью...

Функция Vba
Имеется пользовательская функция, которая по выбранному диапазону ячеек считает...

11
Busine2009
Заблокирован
11.01.2011, 12:57 2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'1)Даны числа a,b,c . Вычислить:
'Z = (Max(a * b, a * c, b * c) - min(a, b, a * b * c)) / Max((a + b), b * c, a * c)
Function Z(a, b, c) As Single
Dim Z1 As Single
Dim Z2 As Single
Dim Z3 As Single
If a * b > a * c And a * b > b * c Then
    Z1 = a * b
ElseIf a * c > a * b And a * c > b * c Then
    Z1 = a * c
ElseIf b * c > a * b And b * c > a * c Then
    Z1 = b * c
End If
If a < b And a < a * b * c Then
    Z2 = a
ElseIf b < a And b < a * b * c Then
    Z2 = b
ElseIf a * b * c < a And a * b * c < b Then
    Z2 = a * b * c
End If
If a + b > b * c And a + b > a * c Then
    Z3 = a + b
ElseIf b * c > a + b And b * c > a * c Then
    Z3 = b * c
ElseIf a * c > a + b And a * c > b * c Then
    Z3 = a * c
End If
Z = Z1 - Z2 / Z3
End Function
Private Sub CommandButton1_Click()
Dim a As Single, b As Single, c As Single, y As Single
a = TextBox1.Text
b = TextBox2.Text
c = TextBox3.Text
y = Z(a, b, c)
MsgBox y
End Sub
1
Kapustyanka
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 10
11.01.2011, 13:15  [ТС] 3
омг
это точно самый короткий путь?)
Спасибо большое)
0
gaw
6633 / 1500 / 169
Регистрация: 09.01.2010
Сообщений: 4,274
11.01.2011, 13:20 4
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub CommandButton1_Click()
Dim a As Single, b As Single, c As Single, y As Single
a = Val(TextBox1.Text): b = Val(TextBox2.Text): c = Val(TextBox3.Text)
 
If mm(a + b, b * c, a * c, 1) <> 0 Then
y = mm(a * b, a * c, b * c, 1) - _
(mm(a, b, a * b * c, -1)) / mm(a + b, b * c, a * c, 1)
MsgBox y
Else
MsgBox "Error: Max((a + b), b * c, a * c)=0 /äåëåГ*ГЁГҐ Г*Г* 0/"
End If
End Sub
Function mm(x As Single, y As Single, z As Single, fl As Integer) As Single
If x * fl >= y * fl Then mm = x Else mm = y
If mm * fl < z * fl Then mm = z
End Function
0
Busine2009
Заблокирован
11.01.2011, 13:23 5
Цитата Сообщение от gaw Посмотреть сообщение
a = Val(TextBox1.Text): b = Val(TextBox2.Text): c = Val(TextBox3.Text)
а зачем Val здесь используется?
К тому же Val округляет цифры.
0
gaw
6633 / 1500 / 169
Регистрация: 09.01.2010
Сообщений: 4,274
11.01.2011, 13:31 6
что б не обрабатывать ошибки ввода
0
Busine2009
Заблокирован
11.01.2011, 13:33 7
gaw,
Val числа округляет, здесь Single используется. Для конвертации надо использовать CSng.
0
gaw
6633 / 1500 / 169
Регистрация: 09.01.2010
Сообщений: 4,274
11.01.2011, 13:41 8
Busine2009
введи в TextBox1 какую нибудь букву или оставь пустым и попробуй
Visual Basic
1
2
a = CSng(TextBox1.Text)
Label1 = a
0
Busine2009
Заблокирован
11.01.2011, 13:55 9
gaw,
но ведь ты же ошибся в данном случае, используя Val.
0
gaw
6633 / 1500 / 169
Регистрация: 09.01.2010
Сообщений: 4,274
11.01.2011, 14:13 10
в чем
0
Busine2009
Заблокирован
11.01.2011, 14:15 11
gaw,
ты округлил дробные числа.
0
gaw
6633 / 1500 / 169
Регистрация: 09.01.2010
Сообщений: 4,274
11.01.2011, 14:25 12
Busine2009

1 способ ввода не суть задачи
2 я сознательно выбрал между округлением и обработкой ошибки ввода то что проще --- округление
если ты собираешься вводить "длинные" числа, то кто ж тебе претит писать под себя
0
11.01.2011, 14:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2011, 14:25

Пользовательская функция в VBA
помогите создать пользовательскую функцию с параметром диапазон в VBA. нужно...

функция Vba for Excel
Доброго времени суток. Опыта работы с VBA практически нет. Необходимо...

Функция VBA для эксель
Помогите понять вообще, что тут происходит. Функция должна считать количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru