2015-11-21 5 views
0

Есть гиперссылка формулы в колонке А. = 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

Beyond получать инструменты в VBE в ► Функции ► Редактор ► Требуется набор переменных декларации, есть некоторые свободные концы в остальной части кода, которые могут вызвать проблемы.

Вы знаете свои собственные данные и структуру формул лучше, чем большинство, но нет гарантии, что существует необязательный параметр [friendly_name]. Я бы рекомендовал использовать Split function, чтобы изолировать нужный параметр link_locationHYPERLINK 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 
Смежные вопросы