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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2013, 21:15   #1
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию Пользовательская форма

Помогите с задачами
1)Организовать в программе выполнение операции возведения в степень, как в целую, так и в дробную. Ввод данных и вывод результата производить через форму.
2)Создать программу под названием «Спортлото», в которой для заданного через форму количества чисел от двух до шести определяются числа, лежащие в интервале от 1 до 99. Вод данных и вывод результата должны быть организованы с помощью пользовательской формы.
3) Организовать в программе вычисление тригонометрической функции косинуса для задаваемого через форму угла в градусах и вывод в форму полученного результата.
в первой смогла возвести но только в целых числа а чтоб возвести в дробные(1/2,1/3) не получается
Код:
Private Sub CommandButton3_Click()
Me.TextBox1.SetFocus
N1 = Val(TextBox1.Text)
Me.TextBox2.SetFocus
N2 = Val(TextBox2.Text)
S = N1 ^ N2
Label5.Caption = S
End Sub
во второй могу вывести одно число но не знаю как вывести столько сколько будет задано
Код:
Private Sub CommandButton1_Click()
b = Val(TextBox1.Text)
a = Int(99 * Rnd + 1)
 ????
 
Label4.Caption = "Числа-победители: " & a
End Sub
в третьей не знаю какую функцию использовать не которые работают но результат не верный
Код:
Private Sub CommandButton3_Click()
a = Val(TextBox1.Text)
//функция косинуса
Label3.Caption = b
End Sub
Наталья Баева вне форума Ответить с цитированием
Старый 06.06.2013, 22:06   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Пункт 1.

Код:
Private Sub CommandButton3_Click()
Dim N1 As Double, N2 As Double
Me.TextBox1.SetFocus
N1 = Val(Replace(TextBox1.Text, ",", "."))
Me.TextBox2.SetFocus
N2 = Val(Replace(TextBox2.Text, ",", "."))
S = N1 ^ N2
Label5.Caption = S
End Sub
Косинус
Код:
Private Sub CommandButton3_Click()
Dim a As Double, b As Double
a = Val(Replace(TextBox1.Text, ",", "."))
b = Cos(a)
Label3.Caption = b
End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 06.06.2013 в 22:08.
doober вне форума Ответить с цитированием
Старый 06.06.2013, 22:19   #3
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию

Replace - это что я такое не использовала?
Наталья Баева вне форума Ответить с цитированием
Старый 06.06.2013, 22:27   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Функция Val распознает только точку (.) в качестве допустимого десятичного разделителя.

Функция Replace
Возвращает строку, в которой указанная подстрока заданное число раз заменена другой подстрокой.

Меняем запятую на точку и музыка играет правильно.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 06.06.2013, 22:28   #5
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию

попробовала использовать эту функцию ничего не работает
Наталья Баева вне форума Ответить с цитированием
Старый 06.06.2013, 22:31   #6
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию

попробовала и там и там в степенях попыталась число 4 возвести в 1/2 но в ответ получила 4
а косинусы просто не верные ответы дают хотя считают также как и при старой программе
Наталья Баева вне форума Ответить с цитированием
Старый 06.06.2013, 22:42   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

не 1/2 а наберите 0,5
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 06.06.2013, 22:46   #8
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию

0,5 работало и раньше но мне нужны не десятичные а обычные дроби веди 1/3 так не запишешь
Наталья Баева вне форума Ответить с цитированием
Старый 06.06.2013, 23:21   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Тогда так
Код:
Private Sub CommandButton3_Click()
Dim N1 As Double, N2 As Double
N1 = Val(Replace(TextBox1.Text, ",", "."))
If InStr(1, TextBox2.Text, "/", vbTextCompare) > 0 Then
N2 = Split(TextBox2.Text, "")(0)) / Val(Split(TextBox2.Text, "/")(1)
Else
N2 = Val(Replace(TextBox2.Text, ",", "."))
End If
S = N1 ^ N2
Label5.Caption = S
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 06.06.2013, 23:28   #10
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию

из этого
If InStr(1, TextBox2.Text, "/", vbTextCompare) > 0 Then
N2 = Split(TextBox2.Text, "")(0)) / Val(Split(TextBox2.Text, "/")(1)
ничего не поняла
мы такого не писали поэтому учитель не поверит что я сама додумалась, можно ли это записать проще?

Последний раз редактировалось Наталья Баева; 06.06.2013 в 23:36.
Наталья Баева вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пользовательская оболочка Werg123 C++ Builder 4 19.03.2013 14:09
Много пользовательская онлайн игра stalker1995s Общие вопросы Delphi 6 23.11.2012 14:32
пользовательская функция МАКСЕСЛИМН Zorg Microsoft Office Excel 7 22.06.2012 11:43
пользовательская процедура KasyaP Microsoft Office Excel 3 27.07.2011 09:39
Пользовательская форма к макросу Flangini Microsoft Office Excel 6 23.04.2008 13:39