С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
djvu
0 / 0 / 0
Регистрация: 18.05.2017
1

Как передавать в качестве аргумента функции экземпляр пользовательского класса?

01.02.2010, 15:18. Просмотров 1320. Ответов 2
Метки нет (Все метки)

Товарищи, подскажите пожалуйста, возможно ли (и как, если возможно) на VBA (Exel 2003) реализовать следующую ситуацию:

1. Существуют два класса, созданные пользователем: Class1 и Class2

2. В Class1 существует поле, определённое как Dim Field as New Class2

Вопрос: возможно ли в Class1 создать процедуру setField(X as Class2), которая бы выполняла копирование всех полей объета X в поле Field? и как её воспользоваться на практике?

Проблема в том, что если я хочу написать
Visual Basic
1
2
3
4
Dim Y as New Class1
Dim X as New Class2
X.setName(Name)
Y.setField(X ) '<- вот на этом месте VBA вылетает...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2010, 15:18
Ответы с готовыми решениями:

Передача массива данных пользовательского типа в качестве аргумента функции
Добрый день! массив ParamArray всегда имеет тип данных Variant В функцию...

Функция в качестве аргумента другой функции
Есть такая задачка: С заданной точностью eps вычислить площадь плоской...

Как получить ссылку на текущий экземпляр класса внутри этого класса?
Как? Чтобы отрабатывал деструктор! и в нем можно было поиметь этот this ... ...

Сделать ReDim, который передаётся в функцию в качестве аргумента
Задача состоит в том, чтобы передать в функцию двумерный массив (таблицу),...

Можно ли объектам Range (не клеткам) давать переменные в качестве аргумента
Вот в чем вопрос: есть лист на котором количество значащих строк меняется....

2
Abu
1154 / 279 / 22
Регистрация: 28.09.2008
Сообщений: 553
01.02.2010, 22:09 2
Цитата Сообщение от DjVu Посмотреть сообщение
Вопрос: возможно ли в Class1 создать процедуру setField(X as Class2), которая бы выполняла копирование всех полей объета X в поле Field?
Да. В Class2 поля должны быть объявлены как Public.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
'Class2
Public sName As String
Public IntSec As Integer
'*******************
'Class1
Private Field As New Class2
 
Sub setField(X As Class2)
MsgBox "set Field"
Field.sName = X.sName
Field.IntSec = X.IntSec
End Sub
 
Sub showField()
MsgBox "Field.sName=" & Field.sName & vbCrLf & "Field.IntSec=" & Field.IntSec, , "Now Field is"
End Sub
'*******************
'Module
Dim Y As New Class1
Dim X As New Class2
X.sName = InputBox("", "", "test")
X.IntSec = Second(Time)
Y.showField
Y.setField X
Y.showField
0
djvu
0 / 0 / 0
Регистрация: 18.05.2017
01.02.2010, 23:41 3
Спасибо. Мегареспект!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2010, 23:41

Организация коллекции объектов пользовательского класса
Есть некий пользовательский класс Mob. И есть класс MobAssistant, существующий...

Как передать форму в качестве параметра функции
В модуле создана функция Public Sub Proverka (forma1 as form) ... end sub...

Как вывести значения аргумента и функции в 2 колонки в Listbox?
Нужно разработать программу, заполняющую объект ListBox значениями аргумента и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru