Excel VBA - ошибка выполнения 1004, ошибка приложения или объекта

Я пытаюсь просмотреть ряд ячеек на листе и написать формулу в каждой из них. Но я продолжаю получать ошибку:

Run-time error '1004'

Application-defined or object-defined error

Код сейчас выглядит так:

Sub updateFormulasForNamedRange()
    'Application.Calculation = xlCalculationManual
    'Application.ScreenUpdating = False

    Dim row, col, fieldCount As Integer
    colCount = 13
    RowCount = 60

    For col = 1 To colCount
        For row = 1 To RowCount
            Dim strColCharacter

            If col > 26 Then
                strColCharacter = Chr(Int((row - 1) / 26) + 64) & Chr(((row - 1) Mod 26) + 65)
            Else
                strColCharacter = Chr(row + 64)
            End If

            Worksheets("Rawdata1").Cells(row, col).FormulaR1C1 = "=IF(Numbers1!$E$" & col & "<>0;Numbers1!" & "$" & strColCharacter & "$" & row & ";"""")"

        Next row
    Next col

    'Application.Calculation = xlCalculationAutomatic
    'Application.ScreenUpdating = True
End Sub

Он терпит неудачу в строке, где вы назначаете формулу ячейке. Я попытался заменить строку просто «тестом», и это сработало. Но именно эта строка не принята. Даже если это та же самая строка, которая в настоящее время находится в строке формул этой конкретной ячейки. А струна мне подходит?

"=IF(Numbers1!$E$1<>0;Numbers1!$A$1;"")"

Я не совсем понимаю разницу между всеми свойствами формулы, но я пробовал их вариант, и все они выдают одну и ту же ошибку. Итак, что может быть причиной этой ошибки?


person Kenny Bones    schedule 11.07.2011    source источник


Ответы (2)


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

Измените .FormulaR1C1 на .Formula

person Stewbob    schedule 11.07.2011
comment
Тем не менее, то же самое происходит. Я также пробовал FormulaLocal. Кажется, не делает этого. - person Kenny Bones; 12.07.2011
comment
Я нашел ошибку, она была в строке, как я и думал. Обновление ответа - person Kenny Bones; 12.07.2011
comment
Если бы это был ответ @Kenny, было бы неплохо установить его ответ как «принятый».... и тогда ваша тема будет помечена как отвеченная. - person Tiago Cardoso; 12.07.2011

Ошибка была в строке:

Worksheets("Rawdata1").Cells(row, col).FormulaR1C1 = "=IF(Numbers1!$E$" & col & "<>0;Numbers1!" & "$" & strColCharacter & "$" & row & ";"""")"

Должны были быть:

Worksheets("Rawdata1").Cells(row, col).FormulaR1C1 = "=IF(Numbers1!$E$" & row & "<>0;Numbers1!" & "$" & strColCharacter & "$" & row & ";"""")"

Ориентация на строку, а не на столбец.

person Kenny Bones    schedule 11.07.2011