跟踪上次使用的ListBox - VBA

时间:2015-05-07 15:03:28

标签: vba properties listbox

我目前正在使用VBA中的表单,并希望使用一个表单来修改另一种形式的某些值。所以我有Form1,它有三个ListBox,每个包含一堆项目。然后我有Form2,它有一个不可修改的TextBox,它将包含用户想要编辑的所选ListBox项的值。

但是,由于我有多个ListBox,我想知道我最后点击了哪个ListBox,这样我就可以从该列表框中绘制所选项目,并在用户点击" Apply"在Form2中。

我看了之后创建了一个属性来跟踪最后一个ListBox的名称。事情是,我在使用它时遇到了麻烦。这是我的代码:

Public Property Get LastClicked() As ListBox
    LastClicked = LastListBox
End Property

Public Property Let LastClicked(boxName As ListBox)
    LastListBox = CStr(boxName)
End Property

Private Sub FirstNameTextBox_Change()
    If (FirstNameTextBox.ListIndex <> -1) Then
        EditButton.Enabled = True
    Else
        EditButton.Enabled = False
    End If
End Sub

Private Sub FirstNameTextBox_Click()
    LastClicked (FirstNameTextBox)
End Sub

Private Sub LastNameTextBox_Click()
    LastClicked (LastNameTextBox)
End Sub

当我尝试使用列表框的名称设置属性时,会返回错误:

&#34;无效使用财产&#34;

我认为这意味着我传递了错误的价值,但我不知道还有什么其他价值可以传递。我很感激我能得到的任何帮助。

1 个答案:

答案 0 :(得分:0)

2个问题。首先,LastClicked是属性,而不是方法。这意味着你需要为它赋值,而不是传递参数。其次,公开对象的属性需要使用Property Set而不是Property LetProperty Let仅适用于灵长类动物。尝试这样的事情:

Option Explicit

Private LastListBox As ListBox

Public Property Get LastClicked() As ListBox
    Set LastClicked = LastListBox
End Property

Public Property Set LastClicked(boxName As ListBox)
    Set LastListBox = boxName
End Property

Private Sub FirstNameTextBox_Change()
    If (FirstNameTextBox.ListIndex <> -1) Then
        EditButton.Enabled = True
    Else
        EditButton.Enabled = False
    End If
End Sub

Private Sub FirstNameTextBox_Click()
    Set LastClicked = FirstNameTextBox
End Sub

Private Sub LastNameTextBox_Click()
    Set LastClicked = LastNameTextBox
End Sub