对象必填错误'424'

时间:2015-11-21 16:29:51

标签: excel excel-vba vba

A列中有超链接公式。= HYPERLINK(“http://localhost:60151/load?file=file:///L:/all_runs_10_12_2015-151121/bam/Horizon_mutation_P72R.bam&goto&locus=chr17:7579422-7579522”,“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

1 个答案:

答案 0 :(得分:0)

除了获取VBE的工具►选项►编辑器►需要变量声明集之外,代码的其余部分还有一些松散的结尾可能会导致问题。

您比大多数人更了解自己的数据和公式结构,但无法保证可选的 [friendly_name] 参数存在。我建议使用Split function来隔离HYPERLINK function所需的 link_location 参数。

用于引用父工作表的方法的一致性将有助于这个短子。我会使用With ... End With statement专门引用ActiveSheet property或工作表.Name property,而不是其中一半和另一半的一半。

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