Макрос Excel - Ошибка установки формулы ячейки - PullRequest
2 голосов
/ 18 мая 2011

Мне нужно добавить функцию в мой лист, используя макросы. Мне нужно передать переменную в функцию Excel, поскольку myWorkbook и sheetName, на которые она будет ссылаться, являются переменными.

MyRange = Workbooks(myWorkbook).Sheets(sheetName).Range("H11:H32")

theFormula = "=SUM(" & MyRange & ")"

Range("B2").Select
   ActiveCell.FormulaR1C1 = theFormula

Я получаю ошибку 13: Type Mismatch.

Я не заядлый программист VBA, и это доставляет мне большую головную боль. Я попытался определить theFormula как String, но без надежды.

Ответы [ 3 ]

3 голосов
/ 18 мая 2011

Вам необходимо преобразовать объект Range в строковое представление диапазона, например, чтобы установить формулу на =SUM($H$11:$H$32);

Dim MyRange As Range
set MyRange = Workbooks(myWorkbook).Sheets(sheetName).Range("H11:H32")

theFormula = "=SUM(" & MyRange.Address(ReferenceStyle:=xlR1C1) & ")"

Range("B2").Select
ActiveCell.FormulaR1C1 = theFormula

Или, если вы не хотите использовать запись R1C1;

ActiveCell.Formula = "=SUM(H11:H32)"
2 голосов
/ 18 мая 2011
Sub MakeSum(sBookName As String, sSheetName As String)

    Dim rMyRange As Range

    Set rMyRange = Workbooks(sBookName).Sheets(sSheetName).Range("H11:H32")

    If rMyRange.Parent.Parent.Name = ActiveWorkbook.Name Then
        With ActiveSheet
            'same sheet, so just use address
            If rMyRange.Parent.Name = .Name Then
                .Range("B2").Formula = "=SUM(" & rMyRange.Address & ")"
            Else
            'same workbook, different sheet, so prepend sheet name
            'single quotes prevent error when there's a space in the sheet name
                .Range("B2").Formula = "=SUM('" & rMyRange.Parent.Name & "'!" & rMyRange.Address & ")"
            End If
        End With
    Else
        'not the same workbook, use external address
        ActiveSheet.Range("B2").Formula = "=SUM(" & rMyRange.Address(, , , True) & ")"
    End If

End Sub
0 голосов
/ 18 мая 2011

Программно это не сработает - вы говорите, что формула ячейки должна быть равна "= SUM (" & MyRange & ")" - однако когда это на самом деле оценивается?

делает theFormula = SUM ("& MyRange &")

работа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...