【问题标题】:Keeping track of last used ListBox - VBA跟踪上次使用的 ListBox - VBA
【发布时间】:2015-05-08 07:17:06
【问题描述】:

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

但是,由于我有多个 ListBox,我想知道我上次单击的是哪个 ListBox,以便当用户在 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

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

“无效使用属性”

我认为这意味着我传递了错误的值,但我不知道要传递什么其他值。如果我能得到任何帮助,我将不胜感激。

【问题讨论】:

    标签: vba properties listbox


    【解决方案1】:

    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
    

    【讨论】:

    • 好吧,这解释了很多。我有点晚了,但非常感谢您的帮助。
    猜你喜欢
    • 2017-06-16
    • 2020-05-26
    • 2023-03-30
    • 2013-04-20
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多