繁体   English   中英

Excel用户窗体VBA

[英]Excel userform vba

我有一个带有几个文本框的Arow1 Arow2Arow1Arow2 ,........)。 表单打开时,将从工作表中的值填充文本框:代码为

Private Sub Arow3_Change()

On Error Resume Next
Me.Arow2.RowSource = ""
Me.Arow4 = Application.WorksheetFunction.VLookup(Me.Arow2, Sheet5.Range("Data"), 2, 0)
Me.Arow6 = Application.WorksheetFunction.VLookup(Me.Arow2, Sheet5.Range("Data"), 4, 0)
Me.Arow5 = Application.WorksheetFunction.VLookup(Me.Arow2, Sheet5.Range("Data"), 6, 0)
If Me.Arow3.Value > "" Then Me.Arow7 = Me.Arow3.Value * Me.Arow6.Value
On Error GoTo 0

End Sub

参考

  • "Data"是指名称范围,数据范围2是指"Code no."
  • 数据范围4表示"Sale Price"
  • 数据范围6表示"Stock"
  • Arow3被命名为"Quantity"
  • Arow4被命名为"Code No
  • Arow5被命名为"Stock"
  • Arow6被命名为"Sale Price"
  • Arow7被命名为"Total"

我需要做的是在Arow6我需要手动将值放在用户表单上,该表单将在Arow7上进行计算(Quantity * Sale Price = Total)

我该如何在上面给出的代码上做到这一点?

摆脱On Error Resume Next On Error Go To 0块,查看实际处理实际错误的过程

使用val()函数将String文本框值转换为

因此,您可能要尝试以下操作:

Private Sub Arow3_Change()
    With Me
        If Not IsNumeric(.Arow3) Then Exit Sub
        .Arow2.RowSource = ""
        .Arow4 = Application.WorksheetFunction.VLookup(.Arow2, Sheet5.Range("Data"), 2, 0)
        .Arow6 = Application.WorksheetFunction.VLookup(.Arow2, Sheet5.Range("Data"), 4, 0)
        .Arow5 = Application.WorksheetFunction.VLookup(.Arow2, Sheet5.Range("Data"), 6, 0)
        If val(.Arow3.Value) > 0 Then .Arow7 = val(.Arow3.Value) * val(.Arow6.Value)
    End With
End Sub

如果您想管理可能的LookUp错误( Arow2文本框应输入的值不是Application.VLookup函数,并检查返回的Variant值是否为Error

Private Sub Arow3_Change()
    Set Sheet5 = Worksheets("Sheet05")
    With Me
        If Not IsNumeric(.Arow3) Then Exit Sub
        .Arow2.RowSource = ""
        .Arow4 = GetLookUp(.Arow2, 2)
        .Arow6 = GetLookUp(.Arow2, 4)
        .Arow5 = GetLookUp(.Arow2, 6)
        If val(.Arow3.Value) > 0 Then .Arow7 = val(.Arow3.Value) * val(.Arow6.Value)
    End With
End Sub

Function GetLookUp(lookUpValue As Variant, iPos As Long) As Variant
    GetLookUp = Application.VLookup(lookUpValue, Sheet5.Range("Data"), iPos, 0)
    If IsError(GetLookUp) Then GetLookUp = ""
End Function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM