|
Тема
|
combobox...
|
|
Автор |
drosg (новак) |
Публикувано | 11.01.11 16:52 |
|
Здравейте и за много години !
Да попитам едно въпросче, защо когато стартирам кода ,все ми изписва грешна парола, каде бъркам ?
Прилагам въпросния код
Private Sub CommandButton1_Click()
'дефинира променлива за брояч
For j = 1 To 15
If ComboBox1.Value = Sheets("оператори").Cells(j, 2) And TextBox2.Text = Sheets("оператори").Cells(j, 1) Then
UserForm2.Hide
Else
MsgBox "Грешна парола!", vbCritical, "Грешна парола!": Exit Sub
End If
Next j
End Sub
| |
Тема
|
Re: combobox...
[re: drosg]
|
|
Автор |
Бypaн (ентусиаст) |
Публикувано | 12.01.11 10:49 |
|
Изписва ти съобщението, защото правиш проверката вътре в цикъла и затова дори при верен потребител и парола, ще ти изведе съобщението 14 пъти.
По-добрия вариант е да си вземеш номера на реда от индекса на комбо-бокса и да си провериш само за този потребител. Разбира се приемам, че стойностите в комбобокса са попълнени последователно от колона B на лист оператори.
| |
Тема
|
едно уточнение...
[re: drosg]
|
|
Автор |
Бypaн (ентусиаст) |
Публикувано | 12.01.11 10:53 |
|
Имай предвид, че индекса на комбобокса започва от 0, т.е. трябва да предвидиш отместване с 1.
| |
Тема
|
Re: едно уточнение...
[re: Бypaн]
|
|
Автор |
drosg (новак) |
Публикувано | 12.01.11 17:34 |
|
Здр Буран !
Не ми е ясно как да взема номера на реда според индекса от комбобокса.
Да споделя казуса по-подробно !
В форма съм поставил един комбобок и един текстбокс .От комбобокса избирам имена на потребители, които между впрочем се съхраняват в лист "оператори" в колона А1:А7 , а в текстбокса въвеждам паролата, която е присвоена на избрания потребител. Паролите се съхраняват в същия лист но в колона В1:В7. Примерно на потребител ААА е присвоена паролата 111.
Как да направя проверка дали избраният потребител от комбобокса и въведената парола съюествуват в листа и дали въведената парола отговаря на избрания потребител.
Дано съм се изразил ясно....
БЛАГОДАРЯ
| |
Тема
|
Re: едно уточнение...
[re: drosg]
|
|
Автор |
Бypaн (ентусиаст) |
Публикувано | 12.01.11 20:46 |
|
Private Sub CommandButton1_Click()
If ComboBox1.Value = Sheets("оператори").Cells(ComboBox1.ListIndex+1, 2) And TextBox2.Text = Sheets("оператори").Cells(ComboBox1.ListIndex+1, 1) Then
UserForm2.Hide
Else
MsgBox "Грешна парола!", vbCritical, "Грешна парола!": Exit Sub
End If
End Sub
и пак казвам - това при условие, че комбото е попълнено последователно (потребителя на първия ред е първи в списъка на комбото, потребителя на втория ред - втори в списъка и т.н.)..
| |
Тема
|
Re: едно уточнение...
[re: Бypaн]
|
|
Автор |
drosg (новак) |
Публикувано | 12.01.11 23:03 |
|
Да точно така е попълнен комбобокса, както и в шийта, тъкато комбото взима данните чрез този код :
Private Sub UserForm_Activate()
Dim i As Integer
Dim z As Integer
'Дефиниране на променлива за брояча
Dim Row As Long
'Установяване на брояча на първия ред от данните
Row = 1
'Изчистване на стари данни в комбо-бокса
UserForm2.ComboBox1.Clear
'Стартиране на цикъл, който се повтаря, докато има
'данни в реда, на който е установен брояча
Do While Worksheets("оператори").Range("B" & Row) <> ""
'Прехвърляне на данните от таблицата в комбо-бокса
UserForm2.ComboBox1.AddItem (Worksheets("оператори").Range("B" & Row))
'Увеличаване на брояча с 1-ца
Row = Row + 1
Loop
End Sub
Поставям този код за да видиш от каде взимам данните за комбото
А иначе за кода ами все същото пак така ми изписва грешна парола ...незная защо така
| |
Тема
|
Re: едно уточнение...
[re: drosg]
|
|
Автор |
drosg (новак) |
Публикувано | 14.01.11 14:53 |
|
Здравей Буран , благодаря ти за отзивчивостта, преписах кода кйто си ми написал, но пак ми дава грешна парола. Аз ли съм збъркал някаде ?
| |
Тема
|
Re: едно уточнение...
[re: drosg]
|
|
Автор |
Бypaн (ентусиаст) |
Публикувано | 14.01.11 15:16 |
|
лично аз не мога да видя проблем. Едва ли е толкова трудно да си дебъгнеш кода и да видиш какво точно не става както трябва. Става дума за 5 ред код
| |
|
|
|
|