Board logo

標題: [發問] 請教如何讓ListBox1已經選取過的不能再次點選 [打印本頁]

作者: koo    時間: 2015-9-27 10:41     標題: 請教如何讓ListBox1已經選取過的不能再次點選

請教如何讓ListBox1已經選取過的不能再次點選
如何將選單反白無法選取或是將該清單移除
謝謝!!!
  1. Private Sub ListBox1_Click()
  2.         Sheets(1).Select
  3.         Cells.Interior.ColorIndex = xlNone
  4.             For j = 1 To ListBox1.ListCount - 1
  5.                 If ListBox1.Selected(j) = True Then
  6.                     gx = ListBox1.Value
  7.                     Set cx = Sheets(1).Cells.Find(gx, after:=[A1])
  8.                     If cx Is Nothing Then
  9.                         ActiveCell = ListBox1.Value
  10.                         If ActiveCell.Column = 1 Then
  11.                             ActiveCell.Offset(1, 0).Select
  12.                         Else
  13.                             ActiveCell.Offset(0, -1).Select
  14.                         End If
  15.                     Else
  16.                         cx.Interior.ColorIndex = 3
  17.                         MsgBox "名單重複加入" & cx.Address
  18.                     End If
  19.                 End If
  20.             Next
  21. End Sub
複製代碼

作者: koo    時間: 2015-9-27 10:49

補充
清單的載入是從另一個Sheets
  1. Private Sub ComboBox1_Change()
  2.     If Me.ComboBox1.ListIndex > 0 Then
  3.         Me.ListBox1.Visible = True
  4.             i = Me.ComboBox1.ListIndex
  5.             Sheets("駕駛").Select
  6.             X = Cells(65536, i + 1).End(xlUp).Row
  7.             ListBox1.Height = 20 * X
  8.             UserForm.Height = 15 * X + 60
  9.             ListBox1.Clear
  10.                 For Each xR In Range(Cells(2, i + 1), Cells(X, i + 1))
  11.                       ListBox1.AddItem xR.Value
  12.                 Next
  13.             ListBox1.ListIndex = 0
  14.             Sheets(1).Select
  15.     End If
  16. End Sub
  17. Private Sub ListBox1_Click()
  18.         Sheets(1).Select
  19.         Cells.Interior.ColorIndex = xlNone
  20.             For j = 1 To ListBox1.ListCount - 1
  21.                 If ListBox1.Selected(j) = True Then
  22.                     gx = ListBox1.Value
  23.                     Set cx = Sheets(1).Cells.Find(gx, after:=[A1])
  24.                     If cx Is Nothing Then
  25.                         ActiveCell = ListBox1.Value
  26.                         If ActiveCell.Column = 1 Then
  27.                             ActiveCell.Offset(1, 0).Select
  28.                         Else
  29.                             ActiveCell.Offset(0, -1).Select
  30.                         End If
  31.                     Else
  32.                         cx.Interior.ColorIndex = 3
  33.                         MsgBox "名單重複加入" & cx.Address
  34.                     End If
  35.                 End If
  36.             Next
  37. End Sub

  38. Private Sub UserForm_Initialize()
  39.     Me.ListBox1.Visible = False
  40.     Rx = Sheets("駕駛").[A65536].End(xlUp).Row
  41.     Me.ComboBox1.List = Sheets("駕駛").Range("A2:A" & Rx).Value
  42.     Me.ComboBox1.ListRows = Rx
  43.     Me.ComboBox1 = "班別"
  44.     UserForm.Height = 57
  45. End Sub

  46. Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  47.     ComboBox1.DropDown
  48.     Me.ListBox1.Visible = False
  49.     Me.ComboBox1 = "班別"
  50.     UserForm.Height = 57
  51. End Sub
複製代碼

作者: lpk187    時間: 2015-9-27 11:49

回復 2# koo

在Private Sub ListBox1_Click()這程式的最後加上
     ListBox1.Enabled = False
作者: koo    時間: 2015-9-28 06:05

回復  koo

在Private Sub ListBox1_Click()這程式的最後加上
     ListBox1.Enabled = False
lpk187 發表於 2015-9-27 11:49


感謝大大回復....目前使用刪除的方式重新取得清單
但新問題又來了...選取狀態無法取消造成該筆清單無法點選
  1. For i = 0 To Me.ListBox1.ListCount - 1
  2.    Me.ListBox1.Selected(i) = False
  3. Next

  4. ListBox1.ListIndex = -1
複製代碼
[attach]22098[/attach][attach]22099[/attach]
作者: koo    時間: 2015-9-28 06:46

目前改用ListBox1.RemoveItem (i)但是會一次砍除2筆
如果使用以下程序也會因為他還是在點選狀態所以產生錯誤
請路過高手指導一番...感謝
  1.             For i = ListBox1.ListCount - 1 To 0 Step -1
  2.                 If ListBox1.Selected(i) = True Then
  3.                     ListBox1.RemoveItem (i)
  4.                 End If
  5.             Next
複製代碼
[attach]22100[/attach]
作者: koo    時間: 2015-9-28 06:59

本帖最後由 koo 於 2015-9-28 07:01 編輯

目前進度使用
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
暫時解決

還是請高手指導一下如何讓上面問題的點選狀態取消...謝謝
作者: GBKEE    時間: 2015-9-28 08:15

回復 6# koo
試試看
  1. If ListBox1.ListIndex > -1 Then
  2.         For i = ListBox1.ListCount - 1 To 0 Step -1
  3.             If ListBox1.Selected(i) = True Then
  4.                 ListBox1.ListIndex = -1
  5.                 ListBox1.RemoveItem (i)
  6.             End If
  7.         Next
  8.     End If
複製代碼

作者: koo    時間: 2015-9-29 18:55

回復  koo
試試看
GBKEE 發表於 2015-9-28 08:15



謝謝版大提示目前已解決:D




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)