Set sht = ActiveSheet
Sh_name = sht.Name
Range("C4").Formula = "=SUMIF('" & Sh_name & "'!$D:$D,'Trial balance'!B4,'" & Sh_name & "'!$G:$G)"
Почему? Давайте иметь жестко закодированное имя листа, например «Sheet1». Наш код будет выглядеть следующим образом:
Range("C4").Formula = "=SUMIF('Sheet1'!$D:$D,'Trial balance'!B4,'Sheet1'!$G:$G)"
И теперь мы будем использовать «Лист1» в качестве жестко закодированного имени листа, но объединяя фиксированную структуру формулы с именем листа.
Range("C4").Formula = "=SUMIF('" & "Sheet1" & "'!$D:$D,'Trial balance'!B4,'" & "Sheet1" & "'!$G:$G)"
Чтобы объединить строки, вы должны написать список строк, разделив их амперсандом '&'. Строка может быть текстом между кавычками или именем переменной. Последний шаг - заменить строки «Sheet1» именем переменной, например, Sh_name:
Sh_name = "Sheet1"
Range("C4").Formula = "=SUMIF('" & Sh_name & "'!$D:$D,'Trial balance'!B4,'" & Sh_name & "'!$G:$G)"
Ваш ожидаемый результат:
Set sht = ActiveSheet
Sh_name = sht.Name
Range("C4").Formula = "=SUMIF('" & Sh_name & "'!$D:$D,'Trial balance'!B4,'" & Sh_name & "'!$G:$G)"