2015-05-07 10 views
0

我目前正在使用VBA中的表單,並希望使用一種形式來修改另一種形式的某些值。所以我有Form1,它有三個ListBox,每個ListBox都有一堆物品。然後我有Form2,它有一個不可修改的TextBox,它將包含用戶想要編輯的選定列表框項目的值。但是,由於我有多個ListBox,我想知道我最後點擊了哪個ListBox,這樣我就可以從該列表框中繪製選定的項目,並在用戶單擊Form2中的「應用」時編輯該項目。保持跟蹤上次使用的列表框 - VBA

我看了創建了一個屬性,將跟蹤最後一個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 

當我嘗試設置與列表框中的名稱的屬性,它帶回來了一個錯誤:

「無效使用的財產」

我認爲這個手段我傳遞了錯誤的價值,但我不知道還有什麼其他價值可以傳入。我會很感激我能得到的任何幫助。

回答

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 
+0

好的,這解釋了很多。有點晚了,但非常感謝你的幫助。 – Alfabit