VBA定制属性难题

时间:2014-02-03 17:28:13

标签: vba class excel-vba module excel

有一个关于VBA的问题,我一直在问Stack。我愿意付出巨大的努力和力度找到答案。请注意,这可能看起来很愚蠢和幼稚,但这是一个棘手的狡猾问题,几乎每个人都会错过答案。


根据我在VBA上的书(Bill Jelin - VBA Macros Microsoft Excel 2010),当我们创建一个自定义对象时,我们打开一个类模块。 自定义对象的属性是变为私有或公开的变量。 这对我来说似乎非常不合逻辑!我将在下面的图片中说明原因。 enter image description here

  1. 只是它的范围(“A1:A4”)
  2. 一个非常简单的Sub用于解释目的(你可以清楚地看到它)

    Sub dd()
      Dim i As Integer
      Dim Top As Range
      Set Top = Range("A1:A4")
      i = Top.Count
      MsgBox i
    End Sub
    
  3. 计数属性“计数”并返回集合中的对象数

  4. 好吧,把这个幼稚的例子放在脑海中一分钟然后继续......


    现在假设我们正在VBA中创建一个自定义对象,因此我们打开一个类模块并将其命名为 clsEmployee 。根据这本书,现在该对象有4个属性,因此我们将它们声明为类模块中的变量:

    Public EmpName as String
    Public EmpID as String
    Public EmpRate as Double
    Public EmpWeeklyHrs as Double
    

    还有一种方法,所以我们在Class模块中输入她

    Public Function EmpWeeklyPay as Double
      EmpWeeklyPay = EmpRate * EmpWeeklyHrs
    End Function
    

    现在,如果我们转到正常的模块引用并通过键入Employee Intellisense窗口来实例化对象......

    enter image description here

    ...向我们展示了这些程序和功能

    如何你会创建像Count这样的自定义属性吗?正如您在第一张图片中的图形示例中所看到的,Count属性参与某种逻辑步骤并计算在集合中逐个解析它们的单元格并返回MsbBox中的数字4。事实上,只有这些逻辑步骤在机器中以某种方式硬编码才有意义。只需键入:

    ,就无法在Class模块中声明这种属性
    Dim Count as Integer
    

    根据书中荒谬的公理说:

    Properties are variables that can be declared Private or Public.
    

    如果Count Property 与图片中的代码中的任何内容不相等,这也是非常明显的事实。这意味着Count属性不是一个“稻草”属性,它需要一些逻辑来解析范围中的单元格(“A1:A4”),并说有4个单元格。我只是无法通过在类模块中键入来创建这样的自定义对象:Dim Count as Integer

    如何在自定义对象属性中创建,如名称,值或计数,而不使用某些过程来告诉编译器只需要做什么在Class模块中输入'straw'声明?

0 个答案:

没有答案