Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование в Microsoft Office для пользователей
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

Решение:

Существует множество вариантов решения этой задачи. Примеры — ниже.

Так может выглядеть решение с обработкой кода ошибки и повторным вызовом функцией самой себя:

Option Explicit

Private Sub CommandButton1_Click()

Call subPrepare

End Sub

 

Public Sub subPrepare()

Dim nReturnCode As Integer

Dim nAnswer As Integer

 

nReturnCode = fDiv()

 

Select Case nReturnCode

Case 1

MsgBox ("Делить на ноль нельзя!")

nAnswer = MsgBox("Повторить?", vbYesNo)

If nAnswer = vbYes Then

Call subPrepare

Else

Application.Quit

End If

Case 2

MsgBox("Нужно число!")

nAnswer = MsgBox("Повторить?", vbYesNo)

If nAnswer = vbYes Then

Call subPrepare

Else

Application.Quit

End If

Case 3

MsgBox ("Неизвестная ошибка")

nAnswer = MsgBox("Повторить?", vbYesNo)

If nAnswer = vbYes Then

Call subPrepare

Else

Application.Quit

End If

End Select

End Sub

 

Function fDiv()

On Error Resume Next

Dim nNum1 As Integer

Dim nNum2 As Integer

Dim nResult As Integer

 

nNum1 = InputBox("Введите первое число")

nNum 2 = InputBox ("Введите второе число")

 

nResult = CInt(nNum1) / CInt(nNum2)

 

Select Case Err.Number

Case 0

Range("B1").Value = nResult

fDiv = 0

Case 11

fDiv = 1

Case 13

fDiv = 2

Case Else

fDiv = 3

End Select

End Function

 

А так — решение с обработкой кода ошибки и циклом:

 

Private Sub CommandButton1_Click()

Dim nNum1 As Variant

Dim nNum2 As Variant

Dim nResult As Integer

Dim nError As Integer

 

Do

nNum1 = InputBox("Введите первое число:")

On Error Resume Next

nError = CInt(nNum1)

If Err.Number = 13 Then

MsgBox ("Нужно число")

nNum1 = ""

End If

On Error GoTo 0

Loop While (nNum1 = "")

Do

nNum2 = InputBox("Введите второе число:")

On Error Resume Next

nError = CInt(nNum2)

If Err.Number = 13 Then

MsgBox ("Нужно число")

nNum2 = ""

ElseIf nNum2 = 0 Then

MsgBox ("Делить на ноль нельзя!")

nNum2 = ""

End If

On Error GoTo 0

Loop While (nNum2 = "")

 

nResult = nNum1 / nNum2

 

Range("B1").Value = nResult

 

End Sub

 

Еще один вариант решения вообще не допускает возникновения ошибок:

Private Sub CommandButton1_Click()

Dim nNum1 As Variant

Dim nNum2 As Variant

Dim nResult As Integer

 

Do

nNum 1 = InputBox ("Введите первое число:")

If IsNumeric(nNum1 & "") Then Exit Do

MsgBox "Нужно число"

Loop

 

Do

nNum2 = InputBox ("Введите второе число:")

If IsNumeric(nNum2 & "") Then

If Int(nNum2) <> 0 Then Exit Do

MsgBox "Делить на ноль нельзя!"

Else

MsgBox "Нужно число"

End If

Loop

 

nResult = nNum1 / nNum2

 

Range("B1").Value = nResult

 

End Sub

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Вперед -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru