Страницы: 1
RSS
Замена имени листа в формуле в макросе на переменную
 
Здравствуйте,

в макросе прописана формула листа типа:
Код
Sub d()
    With Лист2.Range("A1:D1")
        .Formula = Array("=Проверка!A1 + Проверка!E1") 'с листа Проверка 
        .Value = .Value
    End With
End Sub
можно ли в таком коде заменить имя листа Проверка на переменную и подставить в формулу?
что-то типа такого?
Код
Sub d2()
    With Лист2.Range("A1:D1")
dim z as variant
z = "Проверка!"
        .Formula = Array("=z & A1 + z & !E1") 'с листа Проверка 
        .Value = .Value
    End With
End Sub

или части формулы присвоить имя через диспетчер имен и таким образом сократить длину формул?

 
Лист присвоить переменной как объект.
Код
Dim sht As Worksheet
Set sht = Worksheets ("Проверка")
 
Если в z имя листа уже с восклицательным знаком, то:
Код
"=" & z & "A1 + " & z & "E1"
и
Код
Dim z As variant
лучше поменять на
Код
Dim z As String
 
vikttur,  в свой синтаксис кода подставил, не работает,
Если вообще такое возможно, добавьте пожалуйста кусок кода, при котором переменная листа в формуле будет работать,
Заранее спасибо!
 
Alec Perle, большое спасибо!
Получилось
Имя_Листа! в формуле
заменить на" & Z & "

Данным методом пытался найти ответы на два вопроса:
1. в формулах обойти ошибку, если пользователь изменит имя листа (а формулы прописаны в макросе)
2. сократить длину формулы
 
Цитата
CRAFT написал:  vikttur ,  в свой синтаксис кода подставил, не работает
Это я не то написал. Формула - текст, поэтому  достаточно имени листа, записанного в переменную типа string
Страницы: 1
Наверх