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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2011, 17:07   #1
Palomnik1096
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 83
По умолчанию Объявление переменной

Добрый день. Необходима помощь в решении седующей проблемы. Ниже приведен код программы,
Dim KolvoTovar As Integer
Kod1 = False
Do Until Kod1
KodTovar = UCase(InputBox("Введите код товара", "Код товара"))
KolvoTovar = InputBox("Введите количество купленного товара", "Количество товара")
If KodTovar = "" Or KolvoTovar = "" Then
MsgBox "Вы не ввели код или код товара"
Exit Sub
End If
With Worksheets("PriceData").Range("A3")
KTS = Range(.Offset(1, 0), .End(xlDown)).Rows.Count
For i = 1 To KTS
If KodTovar = .Offset(i, 0) Then
Kod1 = True
Exit For
ElseIf KodTovar <> .Offset(i, 0) Then
Kod1 = False
End If
Next i
If Kod1 = False Then
MsgBox "Код товара не найден"
End If
End With
Loop
KT = Range("A3").Offset(i, 0)
Cena = Range("B3").Offset(i, 0)
Party = Range("C3").Offset(i, 0)
SkidkaPr = Range("D3").Offset(i, 0)
Total = Cena * KolvoTovar
SkidkaTotal = Cena * KolvoTovar * (1 - SkidkaPr)
If KolvoTovar >= Party Then
MsgBox " Вы приобрели " & KolvoTovar & " единиц товара " & KodTovar & "" _
& ". Общая стоимость составляет " & Format(Total, "$#0.00") & ". Поскольку " _
& " приобретено больше " & Party & " единиц, то вам предоставляется скидка в " _
& " размере " & FormatPercent(SkidkaPr, 2) & " от общей стоимости. Общая стоимость с " _
& " учетом скидки составит " & Format(SkidkaTotal, "$#.00") & "."
Else
MsgBox " Вы приобрели " & KolvoTovar & " единиц товара " & KodTovar & "" _
& ". Поскольку приобретено меньше " & Party & " единиц, то вам скидка не предоставляется ."
End If
End Sub

в строке:

If KodTovar = "" Or KolvoTovar = "" Then
MsgBox "Вы не ввели код или код товара"
Exit Sub
End If

Проверяются введенные данные пользователем, если он не вводит ничего (либо нажимает cancel), то выдается сообщение об этом и программа завершается.
Если не объявлять переменную KolvoTovar как Integer (либо Long, Doubl и т.д.), то процедура работает в данном месте нормально (то есть идет проверка на "пустую" строку), но при этом в конце программа не правильно работает в блоке:

If KolvoTovar >= Party Then
MsgBox " Вы приобрели " & KolvoTovar & " единиц товара " & KodTovar & "" _
& ". Общая стоимость составляет " & Format(Total, "$#0.00") & ". Поскольку " _
& " приобретено больше " & Party & " единиц, то вам предоставляется скидка в " _
& " размере " & FormatPercent(SkidkaPr, 2) & " от общей стоимости. Общая стоимость с " _
& " учетом скидки составит " & Format(SkidkaTotal, "$#.00") & "."
Else
MsgBox " Вы приобрели " & KolvoTovar & " единиц товара " & KodTovar & "" _
& ". Поскольку приобретено меньше " & Party & " единиц, то вам скидка не предоставляется ."
End If
так как воспринимает KolvoTovar как строку, которая будет всегда больше минимально необходимого числа.
Если объявить переменную как Integer (либо Long, Doubl и т.д.), то выдается ошибка №13 блоке:

If KodTovar = "" Or KolvoTovar = "" Then
MsgBox "Вы не ввели код или код товара"
Exit Sub
End If
Почему так происходит? И переменную объявить не могу, без нее не получается?
Palomnik1096 вне форума Ответить с цитированием
Старый 27.03.2011, 17:36   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Котлеты отдельно-мухи отдельно
Код:
Dim KodTovTovar As String, KolvoTovar As Integer
KodTovar = UCase(InputBox("Введите код товара", "Код товара"))
KolvoTovar = Val(InputBox("Введите количество купленного товара", "Количество товара"))
If KodTovar = "" Or KolvoTovar = 0 Then
MsgBox 
Exit Sub
End If
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 27.03.2011, 17:43   #3
Palomnik1096
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 83
По умолчанию

Огромное спасибо, теперь буду "котлеты" без мух делать!
Palomnik1096 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление глобальной переменной Grom48 Общие вопросы Delphi 3 19.12.2009 22:16
Имя переменной как переменная. Как получить доступ к такой переменной? Denni Microsoft Office Access 8 02.04.2009 10:06
объявление множества BESS Общие вопросы Delphi 7 07.08.2008 15:24
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47