Excel VBA - ошибка 1004 во время выполнения, ошибка приложения или объекта - PullRequest
1 голос
/ 12 июля 2011

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

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;"")"

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

Ответы [ 2 ]

5 голосов
/ 12 июля 2011

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

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

3 голосов
/ 12 июля 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 & ";"""")"

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

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