我對VBA相對較新,正在創建一些表單以幫助進行庫存管理。基於2列中的值刪除列表框項目 - vba
當表格初始化時,會有一個列表框從產品目錄表中提取產品信息。每行有11列,包含產品ID,供應商,價格,庫存物品等信息。還有三個複選框 - 低於項目的項目,等於項目的項目和高於標準的項目。 3個複選框值設置爲True以開始,因爲當表單被初始化時,所有的Inventory都顯示在列表框中。
我正試圖編寫代碼,當其中一個複選框未選中時,將從列表框中刪除產品。例如,如果我取消選中「項目低於標準」,我希望所有產品庫存中的項目數爲<,該項目(另一列)的標準值將被刪除。這將使列表框僅顯示那些處於或高於標準的項目。
我該怎麼做呢?我不知道如何引用列表框列中的值。
預先感謝您!如果不清楚,請提問。
Private Sub UserForm_Initialize()
Dim lr As Long
Dim Inv As Worksheet
Dim rng As Range
Set Inv = Sheets("Inventory")
lr = Inv.Cells(Rows.Count, "A").End(xlUp).Row
Set rng = Inv.Range("A2:K" & lr)
Me.lbInventory.ColumnCount = 11
Me.lbInventory.RowSource = rng.Address
Me.lbInventory.ColumnHeads = True
Me.chkAbove.Value = True
Me.chkBelow.Value = True
Me.chkAt.Value = True
End Sub
Private Sub chkAbove_Change()
ListBuild
End Sub
Private Sub chkAt_Change()
ListBuild
End Sub
Private Sub chkBelow_Change()
ListBuild
End Sub
Sub ListBuild()
Dim Inv As Worksheet
Set Inv = Sheets("Inventory")
Dim r As Integer
Me.lbInventory.Clear
If Me.chkBelow.Value = True Then
For r = 1 To 11
If Inv.Cells(r, 7).Value <
Inv.Cells(r, 9).Value Then
Me.lbInventory.AddItem Inv.Cells(r, 1).Value
End If
Next r
End If
If Me.chkAt.Value = True Then
For r = 1 To 11
If Inv.Cells(r, 7).Value =
Inv.Cells(r, 9).Value Then
Me.lbInventory.AddItem Inv.Cells(r, 1).Value
End If
Next r
End If
If Me.chkAbove.Value = True Then
For r = 1 To 11
If Inv.Cells(r, 7).Value >
Inv.Cells(r, 9).Value Then
Me.lbInventory.AddItem Inv.Cells(r, 1).Value
End If
Next r
End If
End Sub
我得到一個編譯錯誤。這3個語句表達的預期:
If Inv.Cells(r, 7).Value >,<,=
Inv.Cells(r, 9).Value Then
對於每個if語句,在操作符後面添加一個下劃線以使其指向下一行。例如'如果Inv.Cells(r,7).Value> _'我最初在代碼中忘記了它,但更新了我的答案 - 請參見下文。 – SincereApathy
...或者將下一行('Inv.Cells(r,9).Value Then')移動到操作員的同一行上。我只是把它放在了我的例子中。 – SincereApathy
@SincereApathy哦,當然!我很感謝 – sqlnewbie33