Правильный синтаксис для добавления гиперссылок на лист Excel из массива

#arrays #excel #vba #hyperlink

#массивы #excel #vba #гиперссылка

Вопрос:

У меня есть макрос Excel, который использует DIR в lopp для извлечения всех файлов из всех папок и отображения их на листе. Бит кода, который выводится на лист на каждой итерации, является:

 rOut.Range("A1:B1").Offset(iFile).Value = Array(sName, sFile)
  

Я хотел бы вывести первую ячейку в виде гиперссылки на папку, в которой находится файл (хранится в переменной sPath), а во второй ячейке я хотел бы вывести имя файла, которое также является гиперссылкой для открытия файла.

Я придумал этот фрагмент кода:

 With rOut
    With .Cells(1, 1)
        .Offset(iFile).Hyperlinks.Add Anchor:=.Offset(iFile), Address:=sPath, TextToDisplay:=sName
    End With
    With .Cells(1, 2)
        .Offset(iFile).Hyperlinks.Add Anchor:=.Offset(iFile), Address:=sName, TextToDisplay:=sFile
    End With
End With
  

Я знаю, что это неаккуратно, и это заметно медленнее, чем приведенный выше синтаксис массива, но я просто не могу в этом разобраться.

Предложения?

Спасибо.

Комментарии:

1. Выяснить, что получается? Вы получаете сообщение об ошибке? Опубликованный вами код не является «неаккуратным» — просто так создаются гиперссылки. Вы могли назначить обе сразу, если используете что-то вроде rOut.Range("A1:B1").Offset(iFile).Formula = Array(hyperlinkFormula1, hyperlinkFormula1) но это на самом деле не какое-либо улучшение, просто большая конкатенация строк.

2. Ошибок нет, я просто хотел объединить, Тим, спасибо. Однако, как бы мне объявить hyperlinkFormula1?

3. В виде массива строк, например Array("=HYPERLINK(""urlHere"", ""textHere"")", "=HYPERLINK(""url2Here"", ""text2Here"")")