2009-09-10 93 views

回答

3

試試這個。它基本上取消選擇,如果選擇了最後一個項目的超過預定義的限制:

Private Sub ListBox1_Change() 

Dim counter   As Integer 
Dim selectedCount As Integer 

selectedCount = 0 

For counter = 1 To ListBox1.ListCount Step 1 
    If ListBox1.Selected(counter - 1) = True Then 'selected method has 0 base 
     selectedCount = selectedCount + 1 
    End If 
Next counter 

If selectedCount >= 4 Then 'modify # here 
    ListBox1.Selected(ListBox1.ListIndex) = False 'listindex returns the active row you just selected 
    MsgBox "Limited to 4 Choices", vbInformation + vbOKOnly, "Retry:" 
End If 
End Sub 
+0

謝謝。 ListBox.Selected(ListBox.ListIndex)是我正在尋找。 – mandroid 2009-09-10 23:38:37

+2

其實沒有不取消選擇最後一個項目。它將取消選擇列表中的最後一項,但可能不可見。 您也可以使用以下命令獲取確切的列表,而不必檢查每個列表框項目: Me.List11.ItemsSelected.Count – 2009-09-11 00:38:49

+2

aha,我知道有一個更快的方法來返回選定的計數! 我不關注它如何返回列表中的最後一項... listIndex返回列表中的活動索引號,除非沒有選擇索引,那麼它將返回列表的計數。 http://msdn.microsoft.com/zh-cn/library/aa196331(office.11​​).aspx – Fink 2009-09-11 13:43:55

1

使用列表框ItemsSelected集合?這是我知道限制選定項目數的唯一方法。 OTOH有一些真正扭曲的人,他們可能已經找到了替代方案,所以我從不說永遠。

這種方法有什麼問題?

+1

我認爲OP希望阻止選擇多於N個選擇,或者至少能夠在他們反饋錯誤/警告消息時取消選擇最近的選擇。 – BIBD 2009-09-10 19:19:27

3

您可以使用列表框BeforeUpdate事件來查看listbox.ItemsSelected.Count值。 如果這超過了你的限制,那麼你取消選擇(與listbox.Selectec(item)= False)當前的並取消事件。

下面是一個例子: Private Sub lstItems_BeforeUpdate(Cancel As Integer)

' Warn the user that only x items can be selected. 
' ------------------------------------------------ 
If lstItems.ItemsSelected.Count > MAX_SELECTED_ITEM_PERMITTED Then 
    MsgBox "You can only select " & MAX_SELECTED_ITEM_PERMITTED & " items in this list.", vbOKOnly + vbInformation, "Error" 

    ' Unselect previously selected item. 
    ' ---------------------------------- 
    lstItems.Selected(lstItems.ListIndex) = False 
    Cancel = True 
End If 
End Sub 

+0

你能寫一個非常基本的例子嗎? – mandroid 2009-09-10 20:05:43

1

我建議,爲了這個,一個更易於管理,人性化和易於理解的用戶界面將是成對列表框的方式,與地址>和按鈕在用戶達到極限之後。您不必做任何困難,只要檢查右側列表框的ListCount並在達到極限時禁用ADD>按鈕。

而且你避免了很多問題,因爲它對用戶來說非常清楚他們正在做什麼,而不是一次在單個列表框中選擇多個項目。如果ItemsSelected數量超過限制,您可以使左列表框多選,並簡單地禁用ADD>按鈕,並適當地通知用戶。

相關問題