Private Sub txtTotal1_Change()
Dim Final As Integer
If cbOldf_Change() Then
olf1 = cbOldf.ActiveCell.Offset(0, 1)
Final = oldf_col * quantity
ElseIf cbHaribo1_Change() Then
haribo1 = cbHaribo1.ActiveCell.Offset(0, 1) + 1
Final = haribo_col * quantity
ElseIf cbOldf_Change() = cbHaribo1_Change() Then
oldf_1 = cbOldf.ActiveCell.Offset(0, 1) + 1
haribo1 = cbHaribo1.ActiveCell.Offset(0, 1) + 1
Final = oldf_1 + haribo1 * quantity
End If
If txtQuantity1_Change() Then
txtTotal.Value = Final
End Sub
我是vba的新手。我有两个单独的产品工作表(haribo和旧的收藏夹)我有组合框从这些工作表中获取产品和文本框输入数量。在产品工作表中,产品名称在A列中,价格在B列中。我想要实现的是能够从组合框中选择产品名称,在文本框中输入数量并具有总价格计算,然后显示在“总”文本框中。
我是新手,所以请查看我糟糕的代码,我已经给了它一个诚实的5个小时的努力,我现在在我的智慧结束!我希望得到一些帮助或者指出正确的方向。
编辑:这是我的工作簿https://www.dropbox.com/s/49iym4exbcgmhcq/Main%20Page.xlsm 正如你所看到的那样,我正在为大学做这个
答案 0 :(得分:1)
尝试使用此代码设置总数:
Private Sub SetTotal()
Dim dblTotal As Double
Dim dblQuantity As Double
If IsNumeric(Me.txtQuantity1) Then
dblQuantity = CDbl(Me.txtQuantity1)
End If
If cbHaribo1.Value <> "" Then
dblTotal = dblQuantity * GetPrice(Sheets("HARIBO").Range("A:B"), cbHaribo1.Value)
End If
If Me.cbOldf.Value <> "" Then
dblTotal = dblTotal + dblQuantity * GetPrice(Sheets("OLDFAVORITES").Range("A:B"), cbOldf.Value)
End If
Me.txtTotal1 = Format(dblTotal, "0.00")
End Sub
Private Function GetPrice(rng As Range, strProduct As String) As Double
On Error GoTo ErrorHandler
GetPrice = WorksheetFunction.VLookup(strProduct, rng, 2, False)
Exit Function
ErrorHandler:
GetPrice = 0
End Function
要触发此代码,您需要插入以下事件:
Private Sub cbHaribo1_Change()
SetTotal
End Sub
Private Sub cbOldf_Change()
SetTotal
End Sub
Private Sub txtQuantity1_Change()
SetTotal
End Sub
请注意,表单有点含糊不清 - 目前代码适用于Haribo和Old Favorites的数量。更好的是要么产生第二个数量字段 - 或者插入一个灰色的Haribo或旧收藏夹的选项框......