Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 | 3 |

 

  Вопрос: Проблема с типами данных Добавлено: 10.03.07 11:40  

Автор вопроса:  Alias
Задача, ну проще некуда. нужно умножить 2 десятичных числа. Не могу понять ошибку в коде:
Dim a, b, y As Variant
a = TextBox1.Text
b = TextBox2.Text
y = a * b
Label1.Caption = y
(начинающий юзер)

Ответить

  Ответы Всего ответов: 37  

Номер ответа: 1
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #1
Добавлено: 10.03.07 11:59
Dim a, b, y As Variant
a = Text1.Text
b = Text2.Text
y = a * b
Label1.Caption = y

Все должно работать, если нет проверь у тебя случайно в числе не точка, в вычеслениях надо ставить запятую.

Ответить

Номер ответа: 2
Автор ответа:
 Patriot



ICQ: 439168318 

Вопросов: 5
Ответов: 50
 Профиль | | #2 Добавлено: 10.03.07 14:56
Этот пример работает принципи правельно, но, если ты знаешь заранее, какие типы данных будут передоваться в переменные, то желательно присвоить тип переменных поменьше, тип Variant - и работает медленно и памяти кушает много, притом, что первые две(а,в) переменные тоже имеют тип Variant, хоть ты это и неуказал как в третей, Visual Basic, автоматически выставляет тип Variant, если другой явно не указан.

Лучше указать так:
Dim a as Integer, b as Integer, y as Integer

Integer - предназначен для хранения целых чисел в диапазоне -32768 до +32767, т.е. размер памяти, выделяемой под такую переменную состовляет 2 байта. (256*256=65536). Символ для обозначения - "%".
Ты необежайся, но у меня к тебе вопрос:
Вот этот код, который приведён выше, в процедуру вставлен?

Напрмер:
Private Sub Form_Load()
Dim a, b, y As Variant
a = Text1.Text
b = Text2.Text
y = a * b
Label1.Caption = y
End Sub
, бывает и такое, что некоторые невставляют код в процедуру и хотят, чтобы он работал

Ответить

Номер ответа: 3
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #3
Добавлено: 10.03.07 16:10
Вопрос был о несоответствии с типами данных
Проблема с типами данных

Значит процедура уже есть,и он ее вызывает, но есть и ошибка которая скорее всего в написании
числа например 5.5 вместо 5,5 только тогда будет
выскакивать предупреждение о несоответствии с типами данных, 5*5 этой ошибки не вызывает.
А если до конца, то с (as Integer) ответ будет
5,5*5,5 = 25
вариант 1
Private Sub Command1_Click()
Dim a As Double, b As Double, y As Double
a = Text1.Text
b = Text2.Text
y = a * b
Label1.Caption = y
End Sub

вариант 2
Private Sub Command1_Click()
Dim a, b, y
a = Text1.Text
b = Text2.Text
y = CDbl(a) * CDbl(b)
Label1.Caption = y
End Sub

но везде точка после целого числа не идет.

Ответить

Номер ответа: 4
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #4
Добавлено: 10.03.07 16:24
вариант 3
Private Sub Command1_Click()
Dim a As Single, b As Single, y As Single
a = Text1.Text
b = Text2.Text
y = a * b
Label1.Caption = y
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 Alias



Вопросов: 8
Ответов: 15
 Профиль | | #5 Добавлено: 10.03.07 17:43
Спасибо всем.Действительно все дело в точке.
У меня к вам вопрос:почему вы пишите Text1.Text?
У меня этот фокус не проходит

Ответить

Номер ответа: 6
Автор ответа:
 Alias



Вопросов: 8
Ответов: 15
 Профиль | | #6 Добавлено: 10.03.07 17:49
А как можно будет округлить полученный y до целого?

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 10.03.07 19:49
Округление ф-ей Round

Ответить

Номер ответа: 8
Автор ответа:
 Patriot



ICQ: 439168318 

Вопросов: 5
Ответов: 50
 Профиль | | #8 Добавлено: 10.03.07 20:31
Округление:
Cint(занчение) - диапозон округления в интервале Integer
Clng(занчение) - диапозон округления в интервале Long

или Round

Значения - челое число.

Ответить

Номер ответа: 9
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #9 Добавлено: 10.03.07 21:14
У меня к вам вопрос:почему вы пишите Text1.Text?

Так ты в чем пишешь? VB или VBA

Ответить

Номер ответа: 10
Автор ответа:
 -=Fenix=-



Вопросов: 33
Ответов: 81
 Профиль | | #10 Добавлено: 10.03.07 22:05
У меня к вам вопрос:почему вы пишите Text1.Text?
У меня этот фокус не проходит


Добавь текстовое поле в форму и назови его Text1, тогда всё будет кататься в масле +)

Ответить

Номер ответа: 11
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #11
Добавлено: 10.03.07 23:05
Если называть то можно и так
Private Sub Command1_Click()
On Error GoTo OSHIBKA
Label1 = Бабки.Text * КурсБаксов.Text
OSHIBKA:
If Err.Number = 13 Then ' Объект Err - содержит № ошибки
MsgBox "Это не есть число, возможно вы " & vbCrLf & "вставили точку вместо запятой, после целого числа", 48, ""
End If
End Sub

А еще лучше, запрети вставлять точку, пусть автоматом ставится запитая.

Ответить

Номер ответа: 12
Автор ответа:
 Alias



Вопросов: 8
Ответов: 15
 Профиль | | #12 Добавлено: 11.03.07 18:33
Thank you Patriot!!!

Ответить

Номер ответа: 13
Автор ответа:
 Alias



Вопросов: 8
Ответов: 15
 Профиль | | #13 Добавлено: 11.03.07 18:38
Так ты в чем пишешь? VB или VBA

Если VBA - это тот, что встроен в OFFICE,то в нем

Ответить

Номер ответа: 14
Автор ответа:
 Patriot



ICQ: 439168318 

Вопросов: 5
Ответов: 50
 Профиль | | #14 Добавлено: 11.03.07 18:51
Alias, ты меня извини, но в OFFICE, программировать, это же ужас, найди себе нормальный VB 6.0 и всё будет путём

Ответить

Номер ответа: 15
Автор ответа:
 Alias



Вопросов: 8
Ответов: 15
 Профиль | | #15 Добавлено: 11.03.07 19:03
Откуда вы узнали что я пишу программу для валют?
Впрочем, если я правильно понимаю ваш код, то он у меня не получаетсЯ

Private Sub CommandButton1_Click()
Dim a, b As Long
a =Бабки1.Text
b = КурсБаксов2.Text
On Error GoTo OSHIBKA
Label1 = CLng(a * b)
OSHIBKA:
If Err.Number = 13 Then ' Объект Err - содержит № ошибки
MsgBox "Это не есть число, возможно вы " & vbCrLf & "вставили точку вместо запятой, после целого числа", 48, ""
End If
End Sub

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам