Цикл рабочего листа - Как получить имя рабочего листа и поместить его в формулу - PullRequest
0 голосов
/ 20 сентября 2018

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

Вот мой код:

Dim i As Integer
For i = 1 To 60
    wsmain.Cells(2, 11 + i).FormulaArray = "=IF(priceFlag, '[SP60-Sub-Index.xlsm]wsName'!F2, '[SP60-Sub-Index.xlsm]wsName'!E2)"

    strName = wsmain.Cells(2, 11 + i).Value
    With wsmain.Cells(2, 11 + i)
        .Replace "wsName", strName, xlPart
    End With
Next i

Я определил strName как строку, но она не работает.

Есть идеи?

1 Ответ

0 голосов
/ 20 сентября 2018

Это ищет в строке 2 имя листа и помещает формулу в строку 3.

Нет необходимости в замене, просто конкатенация на месте.

FormulaArray создаст формулуформула массива, которую вы хотите просто Формула.

Код, который вы использовали, чтобы обойти ограничение FormulaArrays в 255 символов.Это не нужно для простых формул.

Dim i As Long
For i = 1 To 60
    strName = wsmain.Cells(2, 11 + i).Value
    wsmain.Cells(3, 11 + i).Formula = "=IF(priceFlag, '[SP60-Sub-Index.xlsm]" & strName & "'!F2, '[SP60-Sub-Index.xlsm]" & strName & "'!E2)"    
Next i
...