Excel 对象要求错误';424';

Excel 对象要求错误';424';,excel,vba,Excel,Vba,A列中有超链接公式。=超链接(“,“P72R”) 如果B列(同一行)中的对应单元格不是空的,我想用B列中的任何内容替换公式的标签 我在cl.Formula=Left(cl.Formula,CommaPos+1)和cel.Offset(0,1).Value&““”“处获得所需的错误“424”对象。请查看下面的代码并帮助找出我缺少的内容 谢谢 Sub SpecialLoop() Dim cl As Range Dim rng As Range Dim CommaPos As

A列中有超链接公式。=超链接(“,“P72R”)

如果B列(同一行)中的对应单元格不是空的,我想用B列中的任何内容替换公式的标签

我在
cl.Formula=Left(cl.Formula,CommaPos+1)和cel.Offset(0,1).Value&““”“
处获得所需的错误“424”对象。请查看下面的代码并帮助找出我缺少的内容

谢谢

Sub SpecialLoop()

    Dim cl As Range
    Dim rng As Range
    Dim CommaPos As Long
    Dim LastRow As Long


    LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

    Set rng = Sheets("Sheet1").Range("A2:A" & LastRow)

For Each cl In rng

If Not (IsEmpty(cl.Offset(0, 1).Value)) Then

     CommaPos = InStr(cl.Formula, ",")

    cl.Formula = Left(cl.Formula, CommaPos + 1) & cel.Offset(0, 1).Value & """)"
End If

    Next cl

End Sub

除了获得VBE的工具之外► 选择权► 编辑► 如果需要变量声明集,则代码的其余部分中存在一些可能导致问题的漏洞

您比大多数人更了解自己的数据和公式结构,但不能保证可选的[friendly_name]参数存在。我建议使用来隔离的所需链接位置参数

用于引用父工作表的方法的一致性将有助于这个简短的sub。我将使用a来专门引用或一个工作表,而不是一个工作表的一半和另一个工作表的一半

Sub SpecialLoop()
    Dim cl As Range, rng As Range
    Dim lr As Long

    With Sheets("Sheet1")
        lr = .Range("A" & Rows.Count).End(xlUp).Row
        Set rng = .Range("A2:A" & lr)

        For Each cl In rng
            If Not IsEmpty(cl.Offset(0, 1)) And _
              Left(cl.Formula, 11) = "=HYPERLINK(" Then
                cl.Formula = "=HYPERLINK(" & Chr(34) & _
                             Split(cl.Formula, Chr(34))(1) & Chr(34) & _
                             Chr(44) & Chr(34) & cl.Offset(0, 1).Value2 & Chr(34) & Chr(41)
            End If
        Next cl
    End With

End Sub

cel
看起来像个打字错误。阅读
选项显式
以避免将来使用它。@BrakNicku好眼睛。用户3781528,一次性设置编辑器选项以始终强制变量声明是一个很好的主意。