Страница: 1 | 2 | 3 |
Вопрос: Проверка заполнения всех полей формы.
Добавлено: 01.05.07 14:37
Автор вопроса: fuzytsfcrew | Web-сайт:
Ответы
Всего ответов: 45
Номер ответа: 31
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #31
Добавлено: 03.05.07 20:13
2 Серёга
А зачем для этого хук? Помойму правильнее
Dim TxtObj As Object
For Each TxtObj In Controls
If TypeOf TxtObj Is TextBox Then
If Trim$(TxtObj.Text) = "" Then
MsgBox "Не все поля заполнены!", vbExclamation, "Заполните поле!"
TxtObj.SetFocus
Cancel = 1
Exit Sub
End If
End If
Next
End Sub
Номер ответа: 32
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #32
Добавлено: 03.05.07 20:46
Конечно согласен
If TypeOf TxtObj Is TextBox Then
...
Я даже не знал, что так можно ))
Век живи - век учись!
Номер ответа: 33
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #33
Добавлено: 06.05.07 15:07
Ми себе мозги долбали пришел Hacker и все за минуту решил учитесь не зря он лидер
Номер ответа: 34
Автор ответа:
fuzytsfcrew
ICQ: 314339
Вопросов: 30
Ответов: 102
Web-сайт:
Профиль | | #34
Добавлено: 21.05.07 10:11
Что-то все вроде понятно и не понятно!
Если мне нужна эта проверка, для того, чтоб изменить у некой кнопки значение "Enabled"?
Я пишу код для каждого текстбокса:
cmd.enabled = text1.text <> "" And text2.text ... и т.д.
но мне он выдает ошибку: "Method or data member not found!"
при этом ссылается на то, что у cmd нету такого свойства и предлагает только 4 свойства для него(http://visual-basic.by.ru/pictures/cmd.jpg).
Помогите!!!
Номер ответа: 35
Автор ответа:
Silver Ferrum
ICQ: 422640045
Вопросов: 12
Ответов: 144
Профиль | | #35
Добавлено: 21.05.07 14:12
у тебя создан масив контролов кнопок с названием cmd ! проверь свойство Index, надо чтоб там ничего не было!
Номер ответа: 36
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #36
Добавлено: 21.05.07 20:24
Номер ответа: 37
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #37
Добавлено: 21.05.07 21:34
Слушай, а может у него задумка такая, что надо юзать именно массив? Что скажешь?
Номер ответа: 38
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #38
Добавлено: 22.05.07 01:58
Да, обращение не комне, но я скажу...
Всё дело в том, что Silver Ferrum в глаза невидел VBA, или перепутал раздел форума... Ну максимум поверю что он нажимал когда-то Alt+F11, но потом сразу же нажал Alt+F4...
К чему это я?
Спешу обрадовать, свойства Index в VBA нет совсем, в отличии от VB6
Собственно поэтому ответ №31 и наваян через For Each
Номер ответа: 39
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #39
Добавлено: 22.05.07 15:50
А при чём тут VBA?
Номер ответа: 40
Автор ответа:
Silver Ferrum
ICQ: 422640045
Вопросов: 12
Ответов: 144
Профиль | | #40
Добавлено: 22.05.07 16:27
Посмотри повнимательней, HACKER. Помойму нигде не написано, что этот раздел форума посвящен VBA.. Он просто назывется "Общий форум".. И в вопросе нигде не указано, что требуется пример на VBA.
Номер ответа: 41
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #41
Добавлено: 22.05.07 16:53
Тогда наверно я перепутал раздел форума, а может эту тему когда то из ВБА сюда перенесли? Ок... извиняюсь
Номер ответа: 42
Автор ответа:
Silver Ferrum
ICQ: 422640045
Вопросов: 12
Ответов: 144
Профиль | | #42
Добавлено: 22.05.07 16:55
..ничего страшного
Номер ответа: 43
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #43
Добавлено: 23.05.07 05:21
Можно так:
'Form
Private Sub Text1_Change()
Call InputControl(Text1, 0, 500, 0, icRus, icYes)
End Sub
'Module
Option Explicit
Public Enum MarkView
icRus = 44
icUs = 46
End Enum
Public Enum ShowErrMsg
icNo = 0
icYes = 1
End Enum
Dim CurPos As Long
Dim AfterCheck As String
Public Sub InputControl(ByVal CheckObj As Object, ByVal MinValue As Double, ByVal MaxValue As Double, Optional ByVal NumDigitsAfterDecimal As Byte = 0, Optional ByVal MarkView As MarkView = 44, Optional ByVal ShowErrMsg As ShowErrMsg = icNo)
Dim i As Integer
Dim IsErr As Boolean
Dim CheckedSymbol As String
If AfterCheck = CheckObj.Text Or CheckObj.Text = "" Then
If CurPos >= 0 Then CheckObj.SelStart = CurPos
Exit Sub
Else
AfterCheck = ""
CurPos = CheckObj.SelStart
For i = 1 To Len(CheckObj.Text)
CheckedSymbol = Mid(CheckObj.Text, i, 1)
If (Asc(CheckedSymbol) >= 48 And Asc(CheckedSymbol) <= 57) Or _
 Len(AfterCheck) = 0 And Asc(CheckedSymbol) = 45) Or _
 (Asc(CheckedSymbol) = 44 Or Asc(CheckedSymbol) = 46) And InStr(AfterCheck, "," = 0) Then
If Asc(CheckedSymbol) = 44 Or Asc(CheckedSymbol) = 46 Then
If NumDigitsAfterDecimal > 0 Then
CheckedSymbol = Chr(44)
Else
CurPos = CurPos - 1
Exit For
End If
End If
If AfterCheck = "" And (CheckedSymbol = "," Then
AfterCheck = "0,"
ElseIf AfterCheck = "0" And CheckedSymbol <> "," Then
AfterCheck = CheckedSymbol
ElseIf AfterCheck = "-" And CheckedSymbol = "," Then
AfterCheck = "-0" & CheckedSymbol
ElseIf AfterCheck = "-0" And CheckedSymbol <> "," Then
AfterCheck = "-" & CheckedSymbol
Else
AfterCheck = AfterCheck & CheckedSymbol
End If
Else
If CurPos > 0 Then
CurPos = CurPos - 1
IsErr = True
End If
End If
Next i
If Len(AfterCheck) > InStr(AfterCheck, "," + NumDigitsAfterDecimal And InStr(AfterCheck, "," <> 0 Then
AfterCheck = FormatNumber(AfterCheck, NumDigitsAfterDecimal)
End If
If AfterCheck = "" Then
IsErr = True
AfterCheck = MinValue
ElseIf AfterCheck < MinValue Then
AfterCheck = MinValue
IsErr = True
ElseIf AfterCheck > MaxValue Then
AfterCheck = MaxValue
IsErr = True
End If
If InStr(AfterCheck, "," <> 0 Then Mid(AfterCheck, InStr(AfterCheck, ",", 1) = Chr(MarkView)
If AfterCheck = "-0" Then AfterCheck = "0"
CheckObj.Text = AfterCheck
If ShowErrMsg = icYes And IsErr = True Then
MsgBox "Разрешен ввод только числовых значений больших либо равных " & MinValue & " и меньших либо равных " & MaxValue & "!", vbCritical, "Внимание!"
End If
End If
End Sub
Номер ответа: 44
Автор ответа:
Champion
ICQ: 461506481
Вопросов: 38
Ответов: 88
Web-сайт:
Профиль | | #44
Добавлено: 23.05.07 07:59
использую немного другое для ввода
потом, к примеру
Case 179, 184, 185, 186, 191 To 255
или чтоб нагляднее было
и так
что-то для табуляции
всё остальное в 0
Case Else
KeyAscii = 0
End Select
Номер ответа: 45
Автор ответа:
Champion
ICQ: 461506481
Вопросов: 38
Ответов: 88
Web-сайт:
Профиль | | #45
Добавлено: 23.05.07 08:02
забыл, что это не спасает от Ctrl+V, вставляется всё что угодно