Excel VBA ListBox列表框新增和刪除問題
Excel VBA 窗體中有兩個ListBox,需要做的操作:從一個列表框中選擇列表值向另一個列表新增值,以及從已選擇的值中刪除選擇的列表值。
例:ListBox列表 被選框lbData, 選擇框lbSelectedData,列表框中顯示三列。
'-------------------------------------------------------------------------
'將選中的備選科目加入到已選科目中
'內部變數說明:
'x 代表要迴圈的lbData行
'j 代表要向lbSelectedData插入的行
'i 代表lbSelect和lbData要操作的列
'程式設計思路:
'獲取lbSelectedData已有行數量賦值於j,要新增的行數為該值(因為行數從0開始)
'迴圈檢查lbData中選中的行
'在lbSelectedData中新增空行,行號為j
'將選中的記錄從0列開始將每一列賦值到新行中
'新增新記錄完成後,lbSelectedData可新增行行號加1
'
'操作完畢清空lbData框中的已選中的列,以免誤操作再次被新增
'--------------------------------------------------------------------------
Private Sub SelectListItem(isAll As Boolean)
Dim j As Integer
'獲取可新增行的行號
j = lbSelectedData.ListCount
'向已選科目列表中新增選擇的列
'迴圈lbData每一行資料
For x = 0 To lbData.ListCount - 1
'判斷是否為全部新增(True),還是部分新增(False)
If (isAll) Then
'在lbSelectedData中新增新行,行號為獲取的可新增行行號
lbSelectedData.AddItem , j
'根據lbSelectedData中的列號,迴圈向新行中新增列值
For i = 0 To lbData.ColumnCount - 1
lbSelectedData.List(j, i) = lbData.List(x, i)
Next i
'可新增行行號加1
j = j + 1
Else
'如果記錄被選中進行新增操作
If lbData.Selected(x) = True Then
'在lbSelectedData中新增新行,行號為獲取的可新增行行號
lbSelectedData.AddItem , j
'根據lbSelectedData中的列號,迴圈向新行中新增列值
For i = 0 To lbData.ColumnCount - 1
lbSelectedData.List(j, i) = lbData.List(x, i)
Next i
'可新增行行號加1
j = j + 1
End If
End If
Next x
'清除備選表中的已選列
For y = 0 To lbData.ListCount - 1
lbData.Selected(y) = False
Next
End Sub
如果要選擇備選全部列表值,可以將上述程式碼中“If lbData.Selected(x) = True Then”的條件判斷去掉即可。