2016-02-29 1 views
1

Я пишу лист excel для работы, который, когда я нажимаю кнопку, цикл пробегает несколько строк и редактирует некоторые данные, если они пустые, но я не могу показаться запустите макрос, чтобы он продолжал возвращать ошибку 450. Heres упрощенная версия кода, который не побежит. (Начинается опция явных заканчивается в конце суб форматирования капризничает, когда я вставляю в)Ошибка 450: неправильное количество аргументов или недопустимое присвоение свойств на vba

Option Explicit 

Sub Copypaste() 
' 
' Copypaste Macro 
' 
' Keyboard Shortcut: Ctrl+p 
' 
    Dim i As Integer, j As Integer 
    Dim ls As Boolean 

    i = 2 
    j = 24 
    ls = True 

    Do While ls = True 

     If IsEmpty(i, j) = True Then 
      Cells(i, j).Value = 10 
      ls = False 
     Else 
      ls = True 
     End If 

     i = i + 1 
     j = j + 1 

     If i > 10 Then 
      ls = False 
     End If 
    Loop 
End Sub 

Ive искал нагрузок нитей, и я не могу показаться, чтобы найти кого-нибудь с такая же проблема, как и мои исправления, не кажется проблемой.

Новое в макрос, как и в его обнаружили сегодня, так может быть случай множественных ошибок

ответ

0

Вы должны изменить

If IsEmpty(i, j) = True Then 

в

If IsEmpty(Cells(i, j).Value2) = True Then 
+0

Кроме того, '= true' является redundent – litelite

+0

Спасибо Mil @Ralph, избыточный, который я предполагаю, находится на вершине времени? –

+0

На самом деле это был @litelite, который предположил, что вы можете пропустить '= True'. Хотя он абсолютно прав, я (лично) хотел оставить их в коде, поскольку он упрощает чтение кода для меня. Но это зависит от вас и от личных предпочтений. Если вы хотите удалить его, вы можете сделать это в двух местах: (1) 'Do While ls = True' может быть усечен до' Do While ls' и (2) 'If IsEmpty (Cells (i, j) .Value2) = True Затем 'можно свести к' If IsEmpty (ячейки (i, j) .Value2) Then'. – Ralph