Я почти уверен, что это можно сделать, но перепробовал все виды синтаксиса и не смог заставить его работать.
У меня есть следующая формула в ячейке «А1»:
='Z:\DataFiles[MyData.xlsm]Data'!$A$1
Он создается с помощью этой строки кода:
Sheets("MySheet").Range("A1") = "='Z:\DataFiles\[MyData.xlsm]Data'!$A$1"
В ячейке «B1» на MySheet находится «Z:\DataFiles».
В ячейке «C1» на MySheet находится «MyData.xlsm».
Мой вопрос: как мне написать VBA, чтобы использовать текст в ячейках «B1» и «C1» для создания формулы в «A1»?
Это должно работать:
Sub setFormula()
With Sheets("MySheet")
Range("A1").Formula = "='" & Range("B1").Value & "\[" & Range("C1").Value & "]Data'!$A$1"
End With
End Sub
Вы должны добавить ведущую точку (.
) к каждому вхождению Range
, т. е. .Range
, иначе код завершится ошибкой, если лист MySheet
не является активным листом.
Я бы порекомендовал прочитать разницу между свойством Range.Value и свойством Range.Formula . И, возможно, оператор амперсанд тоже…