Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

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

 

  Вопрос: InputBox выдает ошибку Добавлено: 01.09.10 17:07  

Автор вопроса:  oleg
Всем доброго дня!
Посмотрите в чем у меня ошибка. При нажатии cancel вылетает рантаймовская 13 ошибка.

Private Sub CallUserform3_Click() 'select department via password
beg:    psw = InputBox("Введите пароль вашего цеха")
    Select Case psw
        Case 1
            dept = "ЦМИ"
            Sheets("lists").Range("b2..b5").Name = "ceh"
        Case 2
            dept = "ЦСИ"
            Sheets("lists").Range("c2..c5").Name = "ceh"
        Case 3
            dept = "ЦЗИ"
            Sheets("lists").Range("d2..d5").Name = "ceh"
        Case Else
            GoTo beg
    End Select
 
        UserForm5.Caption = dept
    UserForm5.Calendar.Value = Date
    UserForm3.Hide
    UserForm5.lbl_dept_name = dept
    UserForm5.Show


End Sub

Спасибо

Ответить

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

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 01.09.10 17:32
13 ошибка
разумеется, здесь все и каждый помнит что это за ошибка по ее номеру. особенно в vba

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #2 Добавлено: 01.09.10 19:44
ошибка у Вас в типах данных..
попробуйте написать Case "1" Case "2" и тд
и на всякий случай (наверно лишнее, но все же)
psw = clng(InputBox("Введите пароль вашего цеха";))

или если пароль будит состоять только из цифр можно сделать так:
  1. Select Case clng(psw)

Ответить

Номер ответа: 3
Автор ответа:
 oleg



Вопросов: 12
Ответов: 23
 Профиль | | #3 Добавлено: 02.09.10 08:27
Спасибо Just. Но беда не в этом. Ошибку выдает при отказе от ввода, при нажатии кнопки cancel. В остальном код весь работает нормально.

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 02.09.10 09:47
ошибка в среде программирования. качни там апдейтик есть до дотнета3.5го ..

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #5 Добавлено: 02.09.10 10:53
а если попробовать заменить goto на do loop?
  1.  
  2. Do
  3. psw = InputBox("Введите пароль вашего цеха")
  4. Select Case psw
  5. ....
  6. End Select
  7. Loop While Len(a) = 0

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #6 Добавлено: 02.09.10 10:54
на 7 строке len(psw)

Ответить

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



Вопросов: 12
Ответов: 23
 Профиль | | #7 Добавлено: 02.09.10 11:03
AgentFire Бросьте ссылку, если не сложно.

Ответить

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



Вопросов: 12
Ответов: 23
 Профиль | | #8 Добавлено: 02.09.10 11:06
Just Не помогло. Вырубает стандартный VBA диалог inpubox: ОК-cancel, то есть при отказе пользователя от ввода пароля вместо закрытия окна ввода возникает ошибка.

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #9 Добавлено: 02.09.10 11:12
тогда AgentFire прав, дело не в коде

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #10 Добавлено: 02.09.10 11:46
http://tinyurl.com/3xon48o

Ответить

Номер ответа: 11
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #11 Добавлено: 02.09.10 18:28
Вот так нужно ?

  1. Do
  2.   psw = InputBox("Введите пароль вашего цеха")
  3.   Select Case psw
  4.      Case 1
  5.        dept = "ЦМИ"
  6.        Sheets("lists").Range("b2..b5").Name = "ceh"
  7.      Case 2
  8.        dept = "ЦСИ"
  9.        Sheets("lists").Range("c2..c5").Name = "ceh"
  10.      Case 3
  11.        dept = "ЦЗИ"
  12.        Sheets("lists").Range("d2..d5").Name = "ceh"
  13.   End Select
  14. Loop While psw = ""
  15.  
  16. UserForm5.Caption = dept
  17. UserForm5.Calendar.Value = Date
  18. UserForm3.Hide
  19. UserForm5.lbl_dept_name = dept
  20. UserForm5.Show

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #12 Добавлено: 02.09.10 19:05
нет не так. тебе все написали в посте №8. лови ошибку

Ответить

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



Вопросов: 23
Ответов: 417
 Профиль | | #13 Добавлено: 04.09.10 11:44
Так у меня ошибки не возникает.
Просто без конца спрашивает пароль.

Если нужно, чтобы по отмене прекращалась работа, то можно вот так:
  1. Do
  2.   psw = InputBox("Введите пароль вашего цеха")
  3.   Select Case psw
  4.      Case 1
  5.        dept = "ЦМИ"
  6.        Sheets("lists").Range("b2..b5").Name = "ceh"
  7.        Exit Do
  8.      Case 2
  9.        dept = "ЦСИ"
  10.        Sheets("lists").Range("c2..c5").Name = "ceh"
  11.        Exit Do
  12.      Case 3
  13.        dept = "ЦЗИ"
  14.        Sheets("lists").Range("d2..d5").Name = "ceh"
  15.        Exit Do
  16.      Case ""
  17.        End
  18.   End Select
  19. Loop
  20.         
  21. UserForm1.Caption = dept
  22. UserForm1.Label1 = Date
  23. UserForm3.Hide
  24. UserForm1.Label2 = dept
  25. UserForm1.Show


Никаких ошибок не возникает.

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #14 Добавлено: 04.09.10 18:45
При нажатии cancel вылетает рантаймовская 13 ошибка.

Так у меня ошибки не возникает.
кому верить, федя?

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #15 Добавлено: 04.09.10 21:54
2 AgentFire
так это у oleg'а ошибка была... )

2 Jasmin
а зачем тогда вообще do loop нужен?

Ответить

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

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



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