2015-11-21 100 views
0

有在列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’)所需的对象错误“424”

超级链接公式如果在列B(同一行)对应的小区是不是空白的,我想用列B中的任何内容替换公式的标签。

我收到一个错误'424'对象需要在cl.Formula = Left(cl.Formula, CommaPos + 1) & cel.Offset(0, 1).Value & """)"请参阅下面的代码并帮助找出我失踪的内容。

感谢

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 
+5

'cel'看起来像一个错字。阅读关于“Option Explicit”的内容以避免将来出现。 – BrakNicku

+0

@BrakNicku好眼睛。 user3781528,一次性设置编辑器选项并始终强制执行变量声明是一个很好的主意。 –

回答

0

除了获得VBE的工具►选项►编辑器►要求变量声明集,也有在你的代码的其余部分可能导致问题的一些枝节问题。

您知道自己的数据和公式结构比大多数更好,但不能保证可选[friendly_name]参数存在。我建议使用Split function来隔离所需的link_location而不是HYPERLINK function的参数。

用于引用父工作表的方法的一致性将有助于这个简短的子。我会使用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 
相关问题