我目前正在使用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;
我认为这意味着我传递了错误的价值,但我不知道还有什么其他价值可以传递。我很感激我能得到的任何帮助。
答案 0 :(得分:0)
2个问题。首先,LastClicked
是属性,而不是方法。这意味着你需要为它赋值,而不是传递参数。其次,公开对象的属性需要使用Property Set
而不是Property Let
。 Property 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