【问题标题】:VBA spreadsheets columnsVBA 电子表格列
【发布时间】:2013-03-12 04:15:18
【问题描述】:
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 我正在为大学做这个,你可能会猜到它

【问题讨论】:

  • 如果您发布示例文件(dropbox、skydrive 等),我们会更容易为您提供帮助

标签: excel vba spreadsheet


【解决方案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 和旧收藏夹的数量。最好是提供第二个数量字段 - 或插入一个选项框,将 Haribo 或旧收藏夹显示为灰色...

【讨论】:

  • 谢谢,这对我很有帮助。非常感谢,我可以从您的代码中学到很多东西(:
猜你喜欢
  • 1970-01-01
  • 2016-05-28
  • 2011-02-21
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
相关资源
最近更新 更多