Tag: oop

如何在VBA中为类模块声明静态variables?

我想跟踪Excel-VBA中的特定类的所有实例,如VB.Net中的静态成员。 所以这是我的class级模块: ClassModule:clsClass Private pName as String 'Static pCount Commented as it doesnt work Property Set Name(arg as String) pName=arg End Property Private Sub Class_Initialize() 'pCount = pCount + 1 Commented as it doesnt work End Sub Public Function GetCount() GetCount = pCount End Function 和我的通用模块模块:Module1 Sub ABC() Dim instance1 As New clsClass Dim instance2 […]

需要通过迭代excel文件来创build许多python对象

所以我创build了一个类… class Dept_member: quarterly_budget = 0 outside_services = 0 regular_count = 0 contractor_count = 0 gds_function = '' dept_name = '' def __init__(self, quarterly_budget, outside_services, dept_name): self.quarterly_budget = quarterly_budget self.outside_services = outside_services self.dept_name = dept_name def regular_cost(self): print "%s" % str((self.quarterly_budget – self.outside_services) / self.regular_count) def contractor_cost(self): print "%s" % str(self.outside_services / self.contractor_count) 现在我想使用我收集的variables,同时遍历一个excel文件,使用上面详述的类为每一行创build对象。 for […]

后续的VBAinheritance通过build设,构造不工作?

这是这个问题的后续。 这里是我的用例:我想比较两个Excel文件逐个单元格,并突出显示不同的单元格。 每个文件将有几张纸,每张纸都有几列,每一列都有一个标题和几个值(如典型值)。 以下是比较代码的草稿活动图: 活动图 这是我的草图类图: 类图 我的目标是让VBA对于我经常使用的types(比如电子表格的新旧版本)来说不那么麻烦。 也就是说,我希望它能像Python一样工作…特别是,我想写这样的代码: For Each Sheet1 In File1 Name1 = Sheet1.Name If File2.sheet_dict.Exists(Name1) Then Sheet2 = File1.Sheets(File2.sheet_dict(Name1)) Sheet2.Checked = True For Each Col1 In Sheet1.cols hdr = Col1.Header If Sheet2.header_dict.Exists(hdr) Then Col2 = Sheet2.cols(Sheet2.header_dict(hdr)) Col2.Checked = True For Each Val1 In Col1.Vals Val2 = Col2.Vals(Val1.row_number) Val2.Checked = True If […]

函数返回一个包含返回类的函数的类

我正在研究一个面向对象的Excel加载项来从我们的ERP系统的数据库中检索信息。 这是一个函数调用的例子: itemDescription = Macola.Item("12345").Description Macola是一个负责数据库访问的类的实例。 Item()是Macola类的一个函数,它返回一个ItemMaster类的实例。 Description()是ItemMaster类的一个函数。 这一切工作正常。 项目可以存储在多个位置,所以我的下一步是做到这一点: quantityOnHand = Macola.Item("12345").Location("A1").QuantityOnHand Location()是ItemMaster类的一个函数,它返回ItemLocation类的一个实例(理论上来说,无论如何)。 QuantityOnHand()是ItemLocation类的一个函数。 但由于某种原因,ItemLocation类甚至没有被初始化。 Public Function Location(inventoryLocation As String) As ItemLocation Set Location = New ItemLocation Location.Item = item_no Location.Code = inventoryLocation End Function 在上面的示例中,variablesitem_no是ItemMaster类的成员variables。 奇怪的是,我可以在非类模块中成功实例化ItemMaster类之外的ItemLocation类。 Dim test As New ItemLocation test.Item = "12345" test.Code = "A1" quantityOnHand = test.QuantityOnHand 有什么方法可以使我按照自己的方式工作吗? 我试图保持API尽可能简单。 所以它只需要一行代码来检索一个值。

有没有办法来重载VBA中的类的构造函数/初始化过程?

在C#中,我知道我可以通过在类的主体中指定它来重载类的构造函数: public class MyClass() { public MyClass(String s) { … } } 这覆盖默认的构造函数(没有参数),强制类用参数s初始化。 我知道在VBA中,我可以用Private Sub Class_Initialize()来初始化我的类,但我不知道是否有办法强制我的类用参数初始化。 可以这样做吗?

Excel VBA:销毁一个对象的集合是否会销毁每一个对象?

假设我有一个MyClass对象的集合MyCollection 。 Set MyCollection = Nothing调用每个包含的对象的析构函数,或者我应该照顾设置每个对象= Nothing单独的? 我明显关心内存泄漏的原因。 Dim MyCollection As Collection Set MyCollection = New Collection … 'add objects of type MyClass here Set MyCollection = Nothing 破坏这个类是否调用每个对象的析构函数?

VBA是一种OOP语言吗?它支持多态吗?

我正在做我的第一个VBA项目。 (来自C ++ ) 我想通过实现类和多态来改进现有的Microsoft Excel工作簿使用的VBA项目。 我的问题是: 1 –我读了很多文章/论坛,解释说VBA不是面向对象编程( OOP )语言,不支持多态。 其中一些人提出了使用关键字实现的解决方法。 2 –我还发现了一些这样的网页,它解释了如何在VBA中使用关键字(如Inherits , Override , Overridable , MustOverrides)执行OOP和多态。 所以我的问题是: VBA是一种OOP语言吗?它支持多态吗?

面向对象devise工作手册(对象模型领域,系统顺序图,交互图)

虽然我在面向对象的理论上有一个比较扎实的基础,并且知道如何在一个“演变”devise中构build一个像俄罗斯方块游戏一样简单的东西,而没有大的麻烦,但我想学习如何完全不同首先devise系统的方法,只有他们试图实现它。 我正在寻找能够教会我如何解决问题的东西(例如,一个tic tac toe游戏),并学习如何制作umldevise(对象域模型 – >系统顺序图,最后是通信图)。 我正在寻找一些有理论,实例,练习和解决scheme(如果可能的话)的工作手册。 我知道人们通常会推荐UML和模式,但是我已经在我的OO课程中使用了,发现它很糟糕。