Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Загадочный объект. :)
|
|||
|---|---|---|---|
|
#18+
В Ексел на листе Data1 определена процедура Код: plaintext 1. 2. 3. Код: plaintext 1. 2. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. Но мы делаем так, через Object Код: plaintext 1. 2. 3. 4. 5. Вопрос такой. Какой-таки объект вызывается выражением Код: plaintext 1. "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2009, 14:52 |
|
||
|
Загадочный объект. :)
|
|||
|---|---|---|---|
|
#18+
PS Из справки MS "Sheets Object A collection of all the sheets in the specified or active workbook. Remarks The Sheets collection can contain Chart or Worksheet objects." "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2009, 17:39 |
|
||
|
Загадочный объект. :)
|
|||
|---|---|---|---|
|
#18+
При записи Dim StData1 As Worksheet объявляется переменная, имеющая тип конкретного COM-класса Worksheet, который не имеет метода GetStData. Поэтому не работает. Заметь, Sheets.Item тоже имеет тип Object, поэтому работает Sheets("Data1").GetStData. Jah loves you. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2009, 18:57 |
|
||
|
Загадочный объект. :)
|
|||
|---|---|---|---|
|
#18+
Antonariy Заметь, Sheets.Item тоже имеет тип Object, поэтому работает Sheets("Data1").GetStData. Jah loves you. Ну не совсем. Sheets.Item("Data1") - ссылка на объект Data1. Worksheet не проходит, хотя "The Sheets collection can contain Chart or Worksheet objects." Ну да бог с ним,-"Dim StData1 As Worksheet - переменная, имеющая тип конкретного COM-класса Worksheet, который не имеет метода GetStData" Код: plaintext Но вот на какой объект в иерархии ссылается Код: plaintext 1. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2009, 19:51 |
|
||
|
Загадочный объект. :)
|
|||
|---|---|---|---|
|
#18+
YUBAНу не совсем. Sheets.Item("Data1") - ссылка на объект Data1.Нет объекта Data1. Есть объект Worksheet, у которого свойство Name имеет значение "Data1". А так же это значение используется в качестве ключа коллекции Sheets. YUBAНо вот на какой объект в иерархии ссылается Worksheet Jah loves you. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 10:09 |
|
||
|
Загадочный объект. :)
|
|||
|---|---|---|---|
|
#18+
AntonariyWorksheet Jah loves you. Я что-то видимо не понимаю. 1. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 21:12 |
|
||
|
Загадочный объект. :)
|
|||
|---|---|---|---|
|
#18+
Разница в том, что в 1, 2 и 4 используется позднее связывание, а в 3 — раннее. В 3 заранее определено, какими методами будет обладать объект. А при позднем связывании VBA может расширять классы интегрирующего приложения виртуальными методами на стадии интерпретации. Как-то так. Jah loves you. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 22:40 |
|
||
|
Загадочный объект. :)
|
|||
|---|---|---|---|
|
#18+
YUBA, экземпляр COM-объекта может поддерживать множество интерфейсов, т. е. его можно спросить: "Ты мальчик?", и он "подумает", и скажет "Да", а потом спросить: "Ты девочка?", и он(/-а/-о) тоже скажет "Да". :) Применительно к конкретному Worksheet-у. В-нулевых, он поддерживает базовые интерфейсы IUnknown и IDispatch (в VBA известный как Object). Во-первых, он поддерживает интерфейс Excel.Worksheet. Во-вторых, он поддерживает интерфейс класса конкретного листа. Те методы/свойства, что пишутся в модуль класса, расширяют именно интерфейс класса конкретного листа, а Worksheet о них не знает. Это один ключевой момент. Второй ключевой момент, который тоже может вводить в заблуждение, это наличие трёх имен: 1) имя листа (свойство Name у Worksheet и класса листа, ключ элемента коллекции Sheets), 2) имя класса листа, 3) имя скрытой переменной VBA-проекта, ссылающейся на экземпляр листа. Имя 2 и 3 совпадают всегда (насколько я знаю), а имя 1 может как совпадать с именем 2 (и 3), так и нет. Поэтому высказывание Antonariy "Нет объекта Data1. Есть объект Worksheet, у которого свойство Name имеет значение "Data1" может быть как верным, так и нет. Если второе предложение безусловно верно, то вот первое - это бабушка надвое сказала. Точнее, если Call Data1.GetStData компилируется, то бабушка говорит, что всё-таки объект этот есть, но чтобы не полагаться на мнение бабушки, надо смотреть в свойствах класса в редакторе VBA. Возвращаясь к барану №3, grdat должна быть описана As Имя_класса_листа, чтобы grdat.GetStData компилировалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 12:28 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36149759&tid=2160661]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 144ms |

| 0 / 0 |
