[英]Excel userform vba
我有一个带有几个文本框的Arow1
Arow2
( Arow1
, Arow2
,........)。 表单打开时,将从工作表中的值填充文本框:代码为
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.