VBA цикл через столбцы - если внутри для - PullRequest
2 голосов
/ 31 января 2011

Что не так с этим кодом? Предполагается вернуть заголовок (1-я строка) столбца, в котором он находит «1». Я передаю номер строки (nr), и он должен смотреть между столбцами M и T (включительно)

Function who(ByVal rowNr As Integer) As String
    Dim temp As String
    Dim ws As Worksheet
    With ActiveSheet
        Set ws = ActiveWorkbook.Sheets(.Name)
    End With
    For i = 13 To 20 Step 1
        If ws.Cells(i, rowNr).Value = 1 Then
            temp = temp & " " & ws.Cells(i,1).Value
        End If
    Next i
    who = temp
End Function

Я получаю ошибку

Определяемый приложением или определяемый объектом Ошибка

И отметки линии

If ws.Cells(i, nr).Value = 1 Then

Мне действительно не нравится VB.

Ответы [ 2 ]

1 голос
/ 31 января 2011

Если nr используется в качестве числового значения, почему вы отправляете его как String. Попробуйте изменить это значение на Integer, и вы должны быть как минимум немного дальше.

Редактировать: Я забыл, что я думаю, что вы могли также перепутать строки / столбцы. Я думаю, может быть, вы хотите, чтобы это было:

If ws.Cells(nr, i).Value = 1 Then
0 голосов
/ 31 января 2011

Это сработало для меня

Function who(ByVal rowNr As Long) As String
    Dim temp As String
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    For i = 13 To 20 Step 1
        If ws.Cells(rowNr, i).Value = 1 Then
            temp = temp & " " & ws.Cells(1, i).Value
        End If
    Next i

    who = Trim(temp)

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...