Jump to content

ActiveX. Err: Index is an interger number from 1 upto Count.


Recommended Posts

При обработке именованных ячеек, споткнулся об грабельки.

Properties объектов СПДС имеют Names  обращаясь к которым можно получать свойства

Спойлер

image.thumb.png.5836d64747f9978d0d14082e2d5afe31.png

Это все красиво работает для стандартных и прочих объектов.

У ячейки таблицы есть Properties Names   которое задается, как комментарий ячейки.

Спойлер


Sub ГраблиСименем()
    Set SPDS = CreateObject("McCOM2.Server") 'Получаем COM-сервер СПДС
    TabName = "1" 'эту таблицу будем искать на чертеже
    Set FindTable = SPDS.Query("McCom2.SymTable", "Name=""" & TabName & """") 'ищем таблицу
    If FindTable.Count > 0 Then 'если хоть одна таблица с таким именем найдена
        Set PropTable = FindTable(1).Properties 'хватаем первую из коллекции с таким именем (предполагается, что она одна)))
    End If
    Set rrr = PropTable("Составное имя")
    Set rrr2 = PropTable!Имя
    On Error Resume Next 'тут затык
    Set rrr3 = PropTable("111")
    If Err.Number <> 0 Then
        MsgBox Err.Description
    End If
End Sub

 

Пока комментарий текст, к этому свойству можно обратиться, но если комментарий число, возникает исключение:

Index is an interger number from 1 upto Count.

Собственно вопрос: как это обойти/объехать? Получить свойство с   Names  integer

PS кстати, кто такой interger ?

 

Баг с именем интегер.dwg

Edited by doctorraz
  • Like 2
Link to comment
Share on other sites

Кажется понял, где собака порылась..

когда передаешь имя свойства, а оно число, то СОМ считает, что это индекс свойства и если свойство с таким индексом есть, возвращает свойство по индексу

если число больше, чем количество свойств, то формирует исключение..

Не уверен, что это так задумано(((

  • Confused 1
Link to comment
Share on other sites

Короче переделал я цикл с Names на item

Эти грабельки обошел, один фих проходить по всем свойствам, без разницы,как проход делать, но 

вопрос с произвольной трактовкой нанодвижком , обращения к свойству объекта СПДС остался..

sName="Имя" 'вернет по имени
sName="11" ' вернет по индексу если такой есть, иначе экцепшн
Set rrr = PropTable(sName)

если string но внутри число, то нано считает, что это индекс, если внутри текста текст, то нано считает, что это имя свойства

Цитата

Пусть разработчики смотрят, если это их заинтересует.©

 

Edited by doctorraz
  • Like 2
Link to comment
Share on other sites

Число трактуется как индекс свойства в наборе. Так и задумано. Лучше не использовать чисто числовые имена.

 

Опечатку с "interger" поправили.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...