Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBA

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
djvu
0 / 0 / 0
Регистрация: 18.05.2017
#1

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

01.02.2010, 15:18. Просмотров 1232. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как передавать в качестве аргумента функции экземпляр пользовательского класса? (VBA):

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

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

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

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

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

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

2
Abu
1154 / 279 / 17
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Написать функцию, которая возвращает минимальное и максимальное из двух целых чисел, полученных в качестве аргумента - VBA
Написать функцию, которая возвращает минимальное и максимальное из двух целых чисел, полученных в качестве аргумента. vba

Написать функцию с диапазоном фамилий в качестве аргумента, которая возвращает этот диапазон без повторений - VBA
Написать функцию КОМАНДЫ, аргументом которой является диапазон, содержащий фамилии студентов. Перед вызовом функции пользователь выделяет...

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


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

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

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