if cells ... range ... and

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

if cells ... range ... and

За много години!
Бих искала да попитам относно един проблем а именно:
Това което искам да постигна го постигам с този код:

Private Sub Worksheet_Change(ByVal Target As Range)
r = ActiveCell.Row
c = ActiveCell.Column
If Cells(r, c) = "Д" And range("E20") = "ПР" Then
UserForm3.Show
End If
Next
End Sub

Но условието е изпълнено само за една клета, тоест userform3 се показва само когато условиято е вярно за една клетка, а бих искала и за другите клетки да стане, за това опитах така:

Private Sub Worksheet_Change(ByVal Target As Range)
For N = 5 To 35
r = ActiveCell.Row
c = ActiveCell.Column
If Cells(r, c) = "Д" And Cells(20, N) = "ПР" Then
UserForm3.Show
End If
Next
End Sub

- Но не се получава. Тоест userform3 се извиква, независимо от стойността във втората част на условието. Моля посъветвайте ме, как да го направя така, че userform3 да се показва само когато са изпълнени и двете условия.
Благодаря!

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

Re: if cells ... range ... and

Смени следните два реда:
r = ActiveCell.Row
c = ActiveCell.Column

с тези:

r = Target.Row
c = Target.Column

Отговор
в отговор на BatiGogo #3

Re: if cells ... range ... and

Благодаря ти BatiGogo!

Но пак не се получава.

В тази чат от кода нямам проблем -
r = Target.Row
c = Target.Column
If Cells(r, c) = "Д"

но ето тук имам проблем - And Cells(20, N) = "ПР"
Тоест, userform3 се показва ако в указания диапазон от клетки "Cells(20, N) = "ПР", ако в някоя от клетките стойността е ="ПР". А аз искам само в определена клетка да се проверява каква е стойността. За по нагледно ще прикача картинка.

Ето линк[image][линк][/image]
Двете клетки, който съм очертал с червена рамка - само за тях трябва да са спазени условията, за да се покаже userform3. След това аналогично и за следващите две клетки.
Благодаря!

Редактирано от zvezdi4kata_ff на

Отговор
в отговор на zvezdi4kata_ff #4

Re: if cells ... range ... and

Дали правилно съм прочел мислите ти?
Искаш да провериш дали в някаква клетка има написано "Д" и на 20-ти ред в същата колона да има написано "ПР"?
Ако да - то проверката трябва да бъде:

If (Cells(r, c).value = "Д") And (Cells(20, c).value = "ПР") Then

Имам навик да слагам повечко скоби, както и да ползвам .value /въпреки,че ПОНЯКОГА е излишно/

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

Re: if cells ... range ... and

Мнооогооо благодаря BateGogo! :)

Отговор