2015-02-18 4 views
0

Я не уверен, где проблема с этим кодом, который я разработал. У меня есть следующие публичные заявления и функции:VBA Excel - ошибка при попытке создать диапазон с помощью функции

Public g_0 As Range 
Public Enum RngType 
    A = 1 
    H = 2 
    X = 3 
End Enum 


Function RngMk(csTable As String, csType As RngType, Optional csHeaderName As Variant = "") 

Dim str As String 

Select Case csType 
    Case RngType.A 
     If csHeaderName = "" Then 
      str = csTable & "[#All]" 
     Else: 
      str = csTable & "[[#All],[" & csHeaderName & "]]" 
     End If 
    Case RngType.H 
     If csHeaderName = "" Then 
      str = csTable & "[#Headers]" 
     Else: 
      str = csTable & "[[#Headers],[" & csHeaderName & "]]" 
     End If 
    Case RngType.X 
     If csHeaderName = "" Then 
      str = csTable 
     Else: 
      str = csTable & Chr(91) & csHeaderName & Chr(93) 
     End If 
End Select 

RngMk = Range(str) 

End Function 

Код выше должен установить любой диапазон внутри данной таблицы ListObject. Тем не менее, когда я добавить следующее в Sub

g_0 = RngMk("Table1", A, "Name") 

g_0.Select 

Я получаю сообщение об ошибке «91 - предметная переменная или переменная блока не установлен». Я не уверен, что я не хватает ...

+0

При назначении диапазона, вам нужно использовать 'Set' ключевое слово, так что линия должна быть' Set G_0 = RngMk ("Table1 ", A," Name ")' – tigeravatar

+0

Я добавил 'Set', и он избавился от' Run-time error '91'', однако теперь я получаю новую ошибку: 'Run-time error' 424 ': Object required' –

+0

Является ли ваша переменная 'A' установленной для объекта' RngType' обязательной для вашей функции? – tigeravatar

ответ

0

В функции использовать

Set RngMk = Range(str) 

Это должно решить проблему.

И еще "установить" G_0 = rngmk (.....)

+0

Это сделало это! Спасибо '@ Kyle' и благодарим всех за предложение добавить' Set' перед моими выражениями –

+0

. Добро пожаловать. Я никогда не понимал, что функция действительно может вернуть объект, так что спасибо! – Kyle

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