2013-03-11 82 views
2
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列。我想實現的目標是能夠從組合框中選擇產品名稱,在文本框中輸入數量並獲得總價格進行計算,然後顯示在「總計」文本框中。VBA電子表格列

我是新來的,所以請看看我可怕的代碼,我給了它一個誠實的5個小時的努力,我現在在我的智慧結束!我會喜歡一些幫助或請指出正確的方向。

編輯:這是我的工作簿https://www.dropbox.com/s/49iym4exbcgmhcq/Main%20Page.xlsm 我這樣做的大學,你可以通過看它

+1

如果你發佈了一個示例文件(保管箱,skydrive等),那麼我們會更容易幫你 – brettdj 2013-03-11 12:18:17

回答

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 

注意,形式有點曖昧 - 此刻的代碼適用於量兩者喀拉ibo和舊收藏夾。更好的是你可以嘗試第二個數量字段 - 或者插入一個灰色的哈里波或舊的收藏夾選項框...

+1

謝謝,這真的幫助了我。我非常感謝,我可以從你的代碼中學到很多東西(: – 2013-03-14 09:47:41

相關問題