combobox...

7 отговора 0 прегледа
#1

combobox...

Здравейте и за много години !

Да попитам едно въпросче, защо когато стартирам кода ,все ми изписва грешна парола, каде бъркам ?
Прилагам въпросния код
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

Отговор
в отговор на drosg #2

Re: combobox...

Изписва ти съобщението, защото правиш проверката вътре в цикъла и затова дори при верен потребител и парола, ще ти изведе съобщението 14 пъти.
По-добрия вариант е да си вземеш номера на реда от индекса на комбо-бокса и да си провериш само за този потребител. Разбира се приемам, че стойностите в комбобокса са попълнени последователно от колона B на лист оператори.

Geocaching в България
Отговор
в отговор на drosg #3

едно уточнение...

Имай предвид, че индекса на комбобокса започва от 0, т.е. трябва да предвидиш отместване с 1.

Geocaching в България
Отговор
в отговор на Бypaн #4

Re: едно уточнение...

Здр Буран !
Не ми е ясно как да взема номера на реда според индекса от комбобокса.
Да споделя казуса по-подробно !
В форма съм поставил един комбобок и един текстбокс .От комбобокса избирам имена на потребители, които между впрочем се съхраняват в лист "оператори" в колона А1:А7 , а в текстбокса въвеждам паролата, която е присвоена на избрания потребител. Паролите се съхраняват в същия лист но в колона В1:В7. Примерно на потребител ААА е присвоена паролата 111.
Как да направя проверка дали избраният потребител от комбобокса и въведената парола съюествуват в листа и дали въведената парола отговаря на избрания потребител.
Дано съм се изразил ясно....
БЛАГОДАРЯ

Отговор
в отговор на drosg #5

Re: едно уточнение...

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

и пак казвам - това при условие, че комбото е попълнено последователно (потребителя на първия ред е първи в списъка на комбото, потребителя на втория ред - втори в списъка и т.н.)..

Geocaching в България
Отговор
в отговор на Бypaн #6

Re: едно уточнение...

Да точно така е попълнен комбобокса, както и в шийта, тъкато комбото взима данните чрез този код :

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


Поставям този код за да видиш от каде взимам данните за комбото
А иначе за кода ами все същото пак така ми изписва грешна парола ...незная защо така

Отговор
в отговор на drosg #7

Re: едно уточнение...

Здравей Буран , благодаря ти за отзивчивостта, преписах кода кйто си ми написал, но пак ми дава грешна парола. Аз ли съм збъркал някаде ?

Отговор
в отговор на drosg #8

Re: едно уточнение...

лично аз не мога да видя проблем. Едва ли е толкова трудно да си дебъгнеш кода и да видиш какво точно не става както трябва. Става дума за 5 ред код

Geocaching в България
Отговор