Ссылки между листами с формулами, созданными в VBA - PullRequest
1 голос
/ 18 июля 2011

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

Формула, которую я пытаюсь ввести в ячейку, в основном ... ='Sheet2'A(j) / B(i) со следующим кодом:

For i = 1 To 5
    For j = 1 To 5
        With shOut.Cells(i,j)
            .formula = "='Sheet2'" & Cells(j,1)).Address & "/" & Cells(i,2).Address
        End With
    Next j
Next i

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

Однако, когда я удаляю знак '=' и выводю его в .Value, он выводит то, что мне нужно, за исключением того, что это не формула.

Ответы [ 2 ]

4 голосов
/ 19 июля 2011

Вам не нужно составлять адрес какого-либо диапазона самостоятельно - таким образом вы только оставите себя открытыми для потенциальных проблем.

Например, в ответе cularis (очень хорошо) естьнет одинарных кавычек вокруг имени листа.В этом случае они не требуются, но если в имени листа есть пробел, то вам do нужны кавычки.(Моя точка зрения заключается в том, что вам не нужно знать - и обслуживать - все это самостоятельно).

Вместо этого вы можете указать External:=True в вызове Address(), что даст вамадрес, который включает имя листа.Я бы сделал что-то вроде этого:

Dim oWorksheet1 As Worksheet
Dim oWorksheet2 As Worksheet

...

.Formula = "=" & oWorksheet1.Cells(j,1).Address(External:=True) & "/" & oWorksheet2.Cells(i,2).Address(External:=True)

Обратите внимание, что в вашем случае вам, вероятно, нужно использовать параметр External только для одного из рабочих листов, но при этом, чтобы дополнительное время не повредило,в Excel все равно упростит формулу для вас.

4 голосов
/ 18 июля 2011
  1. В вашей строке слишком много ), которое начинается с .formula.
  2. Вы пропускаете ! после листа:

    .formula = "=Sheet2!" & Cells(j,1).Address & "/" & Cells(i,2).Address
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...