Страница: 1 | 2 |
Вопрос: Очень нужна помощь VBA+Excel
Добавлено: 08.12.06 13:02
Автор вопроса: murrr
Здравствуйте, уважаемые!
Пожалуйста, помогите в решении следующих проблем:
1. Как узнать, загружена ли UserForm?
2. Как передать фокус и держать фокус на Text.Box немодальной UserForm (ShowModal=False).
Огромное спасибо!
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 08.12.06 13:17
' Проект : OfflineClient
' Процедура : IsFormLoaded
' Описание : Возвращает загружена-ли форма
' Кем создан : SNE
' Дата-Время : 07.11.2004-19:12:34
'
' Параметры : sFormName - Имя формы
'--------------------------------------------------------------------------------
Public Function IsFormLoaded(ByVal sFormName As String) As Boolean
Dim i_l As Integer
For i_l = cNull To Forms.Count - vbNull
If sFormName = Forms(i_l).Name Then IsFormLoaded = True: Exit Function
Next
End Function
Номер ответа: 2
Автор ответа:
murrr
Вопросов: 2
Ответов: 10
Профиль | | #2
Добавлено: 08.12.06 13:47
Спасибо, Hacker!
Однако, как все просто, когда знаешь и не забыл.
А как с Проблемой 2?
Номер ответа: 3
Автор ответа:
murrr
Вопросов: 2
Ответов: 10
Профиль | | #3
Добавлено: 08.12.06 14:08
Уважаемый Hacker!
Есть, оказывается проблема с предложенным тобой кодом, а именно - у меня почему-то напрочь отсутствует коллекция Forms. Что делать?
Номер ответа: 4
Автор ответа:
-=Fenix=-
Вопросов: 33
Ответов: 81
Профиль | | #4
Добавлено: 08.12.06 19:50
2) TextBox2.focus если внутри формы
или если откуда-то ещё то UserForm.TextBox2.Focus
Номер ответа: 5
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #5
Добавлено: 09.12.06 08:30
2) обработать: при переходе фокуса на другой объект, написать установку фокуса заново UserForm.TextBox2.setFocus
Номер ответа: 6
Автор ответа:
murrr
Вопросов: 2
Ответов: 10
Профиль | | #6
Добавлено: 09.12.06 09:02
Спасибо, Fenix!
Спасибо, night_roll!
Но это работает только для модальной пользовательской формы (свойство ShowModal=True).
У меня же пользовательская форма немодальная (свойство ShowModal=False).
Загружаю ее кодом <UserForm.Show 0>.
SetFocus как не бымши.
Номер ответа: 7
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #7
Добавлено: 09.12.06 09:32
' кидаем TextBox1
' кидаем TextBox2
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TextBox1.SetFocus
End Sub
и всё работает !?
Номер ответа: 8
Автор ответа:
murrr
Вопросов: 2
Ответов: 10
Профиль | | #8
Добавлено: 09.12.06 09:55
Спасибо, night_roll!
Но, если в случае
<UserForm.TextBox.SetFocus
UserForm.Show 1> -
- фокус есть, то в случае
<UserForm.TextBox.SetFocus
UserForm.Show 0> -
- фокуса нет.
Кстати, <UserForm.ShowModal = False> не работает.
Тут можно только <UserForm.Show 0>.
Номер ответа: 9
Автор ответа:
murrr
Вопросов: 2
Ответов: 10
Профиль | | #9
Добавлено: 09.12.06 11:54
Это опять я!
Наверное, я чего-то (в смысле, ничего) не понимаю.
Если фокус установлен, то где тогда курсор в этом TextBox-е
Номер ответа: 10
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #10
Добавлено: 09.12.06 12:02
Номер ответа: 11
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #11
Добавлено: 09.12.06 12:06
отображение наличия фокуса на объекте(кнтроле) зависит от него самого, т.е. как у него это прописано
Номер ответа: 12
Автор ответа:
murrr
Вопросов: 2
Ответов: 10
Профиль | | #12
Добавлено: 09.12.06 13:02
В курсоре и вся проблема - необходимо, чтобы в TextBox-е был курсор. Мне нужно обеспечить параллельный ввод и с клавиатуры, и кликом мыши.
Номер ответа: 13
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #13
Добавлено: 09.12.06 13:45
ты напиши делом, что ты хочешь сделать (хотя бы на этом этапе)?
И что такое
Номер ответа: 14
Автор ответа:
murrr
Вопросов: 2
Ответов: 10
Профиль | | #14
Добавлено: 11.12.06 05:14
Уважаемый night_roll!
Согласна, первый вопрос поставлен некорректно.
С клавиатуры нужно вводить всякую цифирь, кликом мыши - адрес ячейки. Если говорить об аналоге, то это Мастер функций в Excel.
Номер ответа: 15
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #15
Добавлено: 13.12.06 01:04
Ты сама непонимаешь что хочешь от компьютера. Это просто женская логика, не в обиду сказанно... У компа только 0 и 1, а "может быть" здесь нет.
Если тебе нужно вводить данные с клавы в текстбокс, то на форме, на который этот текстбокс должен быть фокус. Т.е. .Show 0 абсолютно ненужен.
При убивании фокуса с формы, фокус убивается и со всех контролов на этой форме. При возвращении на эту форму, фокус может запоминатся, но только при возвращении.
Если хочешь чтобы форма была не активна, соответственно текстбокс был без фокуса, но всеравно туда падало все что нажато - это уже слежение за клавой, хуками например или ещё чем-то там... хоть в цикле... но само оно небудет, и не должно...
Если форма показана .Show 0, т.е. она не модальна, перед установкой фокуса форму нужно сделать активную, т.е. показать её по нормальному, или установить фокус на контрол из этой формы, что соответственно саму её сделает активную...