2015-11-10 2 views
2

Может кто-нибудь объяснить, почему это происходит? У меня есть переменная array Loans(), которая хранит несколько коротких строк, которые мне нужно использовать позже для форматирования сводной таблицы. Значения сохраняются в листе «Список фондов». Затем лист удаляется, но мне все равно нужно использовать значения. Excel возвращает ошибку, требуемую объектом, когда я пытаюсь использовать переменную Loans() после удаления листа. Я нашел способ обойти это, чтобы не удалить лист, но кто-нибудь знает, почему это? Соответствующий код приведен ниже.Переменная массива, не удерживающая значение после удаления листа

Sheets("Fund List").Select 

    ' some code 

Dim Loans() As Variant 
Dim index As Integer 
If LN > 0 Then 
    ReDim Loans(LN - 1) 
    index = 0 
    For i = 1 To LastRow 
     If Range("H" & i).Value = 3 Then 
      Set Loans(index) = Range("A" & i) 
      index = index + 1 
     End If 
    Next i 
End If 

    ' some more code 

Sheets("Fund List").Delete 

    ' more code 

Set objField = objTable.PivotFields("Fund") 
If LN > 0 Then 
    For index = 0 To UBound(Loans) 
     ' I get an object required error on the following line: 
     LNFund = Loans(index) 
     objField.PivotItems(LNFund).Visible = False 
    Next index 
End If 

ответ

6

Вы устанавливаете элементы массива вариантов на Range object.

Set Loans(index) = Range("A" & i) 

Присвоить Range.Value или Range.Value2 property вместо этого.

Loans(index) = Range("A" & i).Value2 

Примечание: Set.

+0

А, это имеет смысл! Спасибо за быстрый ответ! – Chris

Смежные вопросы