设Value-string,获得长VBA值

时间:2016-08-08 14:41:34

标签: vba excel-vba excel

我正在使用类模块来存储按钮位置的值。我将使用相同的函数连续添加3个按钮,因此需要更改.left以根据其类型定位按钮;

  

即“创建”按钮,我将查看A列的.Left

     

对于“更新”按钮,我将查看B列的.Left

     

对于“销毁”按钮,我将查看C列的.Left

我可以在我的代码中添加case select,但为了便于阅读,我认为它在类模块中会更好。

目前我正在尝试执行以下操作 - 类模块中的相关行:

Private pLeft As Long

Public Property Get Left() As Long
Left = pLeft
End Property

Public Property Let Left(strType As String)
    Select Case strType
        Case "Create"
            pLeft = pRange.Offset(0, 4).Left
        Case "Update"
            pLeft = pRange.Offset(0, 5).Left
        Case "Open"
            pLeft = pRange.Offset(0, 6).Left
    End Select
End Property

模块中的相关行:

Dim Button As CButton
sub LetValueForLeft()
    Set Button = New CButton
    Button.Left = "Create"
End Sub

心碎我得到了错误:

enter image description here

我认为这是因为我正在使用一个字符串并且用很长的时间进行GET,有没有办法解决这个问题?

我一直在使用下面真正有用的指南,但它没有说明这种情况:

http://www.cpearson.com/excel/classes.aspx

1 个答案:

答案 0 :(得分:2)

属性的LetGet必须是同一类型。如果我正确理解您要执行的操作,您始终可以将Left设为只读属性并使用方法对其进行初始化:

'Class
Private pLeft As Long

Public Property Get Left() As Long
    Left = pLeft
End Property

Public Sub AssignLeft(strType As String)
    Select Case strType
        Case "Create"
            pLeft = pRange.Offset(0, 4).Left
        Case "Update"
            pLeft = pRange.Offset(0, 5).Left
        Case "Open"
            pLeft = pRange.Offset(0, 6).Left
    End Select
End Sub

你会这样称呼它:

Set Button = New CButton
Button.AssignLeft "Create"