2015-08-04 4 views
0

В настоящее время я получаю сообщение об ошибке, указывающее, что индекс вне диапазона. на строке кодаОшибка времени выполнения VBA 9

If Sheets(Master).Cells(i, A).Value = AssetNum.Value Then 

Я пытаюсь использовать цикл для увеличения я поэтому диапазон строк начинается в 12 и добавляет 1 к нему каждый раз. Затем внутри цикла for я хочу использовать оператор If для проверки и проверить, равна ли ячейка (i, A) значению в AssetNum. Если цикл достигает значения EmptyRow, он завершает цикл. Я не совсем уверен, как правильно использовать инструкцию IF-TH для цикла.

Public i As Integer 

Private Sub AssetNum_Change() 

End Sub 

Private Sub Enter_Click() 



Dim EmptyRow As Long 

'Audit will only search Master Sheet 
Worksheets("Master").Activate 


'Find empty row value so we can use that for limit of search 
With Sheets("Master") 
    EmptyRow = .Range("A" & Rows.Count).End(xlUp).Row + 1 
End With 

'i needs to be set to minimum limit 
'Begin loop of search 
For i = 12 To EmptyRow + 1 

If Cells(i, 1).Value = AssetNum.Value Then 

    'Go to compare userform to display 

    Compare.AssetDisplay.Value = AssetNum.Value 
    Compare.LocationDisply.Value = Cells(i, 2).Value 
    Compare.Show 

    End If 
Next i 

    'If i gets to emptyrow num then go to non found asset userform 
    Unload Me 
    NonFoundAsset.Show 
+1

Пожалуйста, ваш реальный код (тот, который компилирует, и что соответствует первому фрагменту в вашем вопросе) – Amit

+0

Вы Ждете» t получите строку кода, о которой вы говорите, в свой вопрос. Если листы (мастер) .Cells (i, A) .Value = AssetNum.Value Затем не указано в коде, который вы опубликовали. – MatthewD

+0

Прошу прощения, я изменил его, чтобы попробовать другой вариант. – Pwoods

ответ

1

Я предполагаю, что ваш см с ошибкой в ​​строке:

If Cells(i, A).Value = AssetNum.Value Then 

Ну, я не вижу нигде, что A объявлен. Затем VBA объявляет его автоматически (совет: всегда turn Tools, Options, Требовать объявления переменных до ON). Я также не вижу A, поэтому его значение будет 0, и это неверная ссылка для Cells. Следовательно, Подкласс вне пределов.

Если вы хотите, чтобы ссылаться на столбец "A", а затем написать:

If Cells(i, 1).Value = AssetNum.Value Then 

как "А" является первой колонке.

+0

Я пытался использовать «а», как только столбец – Pwoods

+0

Если бы у вас был turnd на _Tools, Options, Require variable declarations_, то VBA дал бы вам ошибку, что A не объявлен, и вы бы знали, что делаете что-то неправильно здесь ... –

+0

У меня теперь есть, что включен, спасибо, я не знал, что смогу сделать это – Pwoods

0

Использования следующим образом:

If Sheets(Master).Cells(i, "A").Value = AssetNum.Value Then 

А также строки:

Compare.LocationDisply.Value = Cells(i, "B").Value 
Смежные вопросы