Гиперссылка - выдает ошибку времени выполнения 5 & ldquo; неверный вызов процедуры или аргумент & rdquo;

Каждый первый j-цикл начинается с сравнения строки с самим собой, поскольку вы начинаете с j = i. Разница между значением и самим всегда равна нулю. (Он также сравнивает строку 2 с самим собой как последний шаг.)

Однако, если вы переключитесь:

For i = lrow To 2 Step -1
For j = i To 2 Step -1

на:

For i = lrow To 3 Step -1
For j = i - 1 To 2 Step -1`

код будет сравнивать все различные строки без самовыравнивания.

Еще одна точка (которую @Proger_Cbsk ответ вспомнил), заключается в том, что сравнение с просто вычитание .Cells(i, "B").Value - .Cells(j, "B").Value < 100 иногда приводит к неожиданным результатам.

Например, предположим .Cells(i, "B").Value = 1 и .Cells(j, "B").Value = 250. Мы можем сказать, просто глядя, что существует разница не менее 100, поэтому вы ожидаете, что эта часть выражения будет оцениваться как False. Однако из прямой подстановки вы получаете выражение: 1 - 250 < 100. Начиная с 1 - 250 = -249, и с -249 < 100 выражение действительно оценило бы True.

Однако, если вы должны были изменить .Cells(i, "B").Value - .Cells(j, "B").Value < 100 на Abs(.Cells(i, "B").Value - .Cells(j, "B").Value) < 100, выражение теперь будет смотреть, разница больше или меньше 100, вместо того, чтобы смотреть, если результат вычитания больше или меньше 100.

1
задан Pᴇʜ 21 January 2019 в 07:47
поделиться

2 ответа

Измените If Cells(i, "A").Value <> "" Then на If Sheets("TABLES").Cells(i, "a").Value <> "" Then ~ Надеюсь, это сработает. Он не распознает объект в первой строке.

0
ответ дан skkakkar 21 January 2019 в 07:47
поделиться

Кошмар гиперссылки

Option Explicit

Sub Error5()

    Dim i As Long
    Dim k As Long
    Dim c As Variant

    With Sheets("Tables")
        For i = 4 To 23
            If .Cells(i, "A").Value <> "" Then
                k = .Cells(i, "A").Value
                c = Application.Match(k, Sheets("Sheet2") _
                        .Range("B11:B50000"), 0)
                If IsError(c) Then
                  Else
                    .Hyperlinks.Add _
                            Anchor:=.Cells(i, "A"), _
                            Address:="", _
                            SubAddress:="Sheet2!F" & c, _
                            TextToDisplay:=CStr(k)
                End If
            End If
        Next
    End With

End Sub
0
ответ дан VBasic2008 21 January 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: