Тема: VBA работа с ячейками и переменными

У меня есть строка
For u = 1 To 12
      If Application.Sheets("Pokaz").Cells(ysr + u, h) = vibr(0) Then nom = ysr + u
   Next u
выдаёт Nom равным нулю,а если написать так
For u = 1 To 12
      If Application.Sheets("Pokaz").Cells(ysr + u, h) = "Бухгалтерия ЛБ" Then nom = ysr + u
   Next u
ТОгда выдает то что нужно
vibr(0)массив типа variant проверяла-содержит "Бухгалтерия ЛБ"
Помогите пожайста! Нужно позарез.

Re: VBA работа с ячейками и переменными

> Radiga
Возможно проблем в типе данных, попробуй так:

If Application.Sheets("Pokaz").Cells(ysr + u, h) = CStr(vibr(0)) Then nom = ysr + u

Fatty
~'J'~

Re: VBA работа с ячейками и переменными

> Fatty
пробовала с CStr - дохлый номер
А можно использовать .Find только для заданной области , например искать с 1 по 5 строку в 3-ем столбце? Как?

Re: VBA работа с ячейками и переменными

> Radiga
Если значение будет найдено цвет текста
изменится на красный (для наглядности,
удали если без надобности)
Измени номер листа на свой:

Sub FindValue()
    Dim ToFind As String, FindRange As Range
    Dim FirstAddress As String
    ToFind = "Бухгалтерия ЛБ"
    With Worksheets(1).Range("c1:c5")
        Set FindRange = .Find(ToFind, LookIn:=xlValues)
        If Not FindRange Is Nothing Then
            FirstAddress = FindRange.Address
            Do
                If FindRange.Value = ToFind Then
                    FindRange.Font.Color = vbRed
                    GoTo GOTCHA
                End If
                Set FindRange = .FindNext(FindRange)
            Loop While Not FindRange Is Nothing And FindRange.Address <> FirstAddress
        End If
    End With
GOTCHA:
    MsgBox "Адрес ячейки: " & Chr(34) & FindRange.Address & Chr(34)
End Sub

~'J'~

Re: VBA работа с ячейками и переменными

> Radiga
Так тоже работает как при явном объявлении
переменных (Option Explicit) так и при неявном

Sub test1()
Dim u As Long, h As Long, ysr As Long, nom As Long
Dim vibr, findit
vibr = Array("Бухгалтерия ЛБ", "Бухгалтерия МБ", "Бухгалтерия НБ")
ysr = 0: h = 3
For u = 1 To 12
findit = Application.Sheets("Pokaz").Cells(ysr + u, h)
If findit = vibr(0) Then
nom = ysr + u
GoTo RESULT
End If
Next u
RESULT:
MsgBox "Number Is: " & CStr(nom)
End Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Sub test2()
Dim u As Long, h As Long, ysr As Long, nom As Long
Dim vibr
vibr = Array("Бухгалтерия ЛБ", "Бухгалтерия МБ", "Бухгалтерия НБ")
ysr = 0: h = 3
For u = 1 To 12
If Application.Sheets("Pokaz").Cells(ysr + u, h) = vibr(0) Then
nom = ysr + u
GoTo RESULT
End If
Next u
RESULT:
MsgBox "Number Is: " & CStr(nom)
End Sub

~'J'~