非常基本的使用VBA属性

时间:2014-05-15 20:20:51

标签: vba properties

我想使用这个属性:

Public Property Get HasNoData() As Boolean

   HasNoData = (numberOfColumns < 2 And numberOfRows < 2)

End Property

Sub test()

Dim numberOfColumns As Long
Dim numberOfRows As Long

numberOfColumns = 5
numberOfRows = 3

If HasNoData Then
MsgBox True
Else:
MsgBox False

End If

End Sub

每当我得到 TRUE 时,无论条件是否满足。我可能会把整个想法弄错,所以请告诉我。

1 个答案:

答案 0 :(得分:2)

现在您的代码存在一些问题:

  1. 属性只能是类的成员
  2. 变量取决于所谓的范围,具体而言,您的两个变量numberOfColumnsnumberOfRows仅在test() Sub的范围内可用,因此它们及其值不能可以在HasNoData()属性中看到,除非它们作为参数传递或设置为类
  3. 的成员
  4. VBA Msgbox将String作为参数,而您提供了布尔
  5. 我认为你真正想要的是将“HasNoData”变成一个带有两个参数的函数,一个用于行,一个用于列。试试这个:

    Public Function HasNoData(NumRows, NumCols) As Boolean
       HasNoData = (NumCols < 2 And NumRows < 2)
    End Function
    
    Sub test()
        If HasNoData(3, 5) Then
            MsgBox "There is data!"
        Else
            MsgBox "There is no data."
        End If
    End Sub