我有一个包含一个ComboBox(YearToBeBuilt
)和两个textBox字段(Cost
和YearofExpenditureCost
)的表单。所有控件都链接到主表,一旦在表单上进行了选择/输入,表格就会更新。
我在VB中编写了一个名为ReCalcIt()
的过程,在调用时执行以下过程:
Private Sub ReCalcIt()
If Me.YearToBeBuilt = "" Then
Me.YearofExpenditureCost = Me.Cost
Else
Me.YearofExpenditureCost = Me.Cost * (1 + 0.031) ^ (Me.YearToBeBuilt - 2010)
End If
End Sub
当我写这篇时,我认为这会做到以下几点:
如果ComboBox [YearToBeBuilt]
为空(例如 - 没有选择),那么
文本框[YearOfExpenditureCost]
将返回TextBox [Cost]
的值。否则,执行YearofExpenditureCost
的计算。
但这不应该按照
的方式运作我做错了什么?我是VBA n00b所以也许我的语法不正确?
答案 0 :(得分:4)
尝试
If Len(Me.YearToBeBuilt & vbNullString) = 0
所以代码看起来像这样:
Private Sub ReCalcIt()
If Len(Me.YearToBeBuilt & vbNullString) = 0 Then
Me.YearofExpenditureCost = Me.Cost
Else
Me.YearofExpenditureCost = Me.Cost * (1 + 0.031) ^ (Me.YearToBeBuilt - 2010)
End If
End Sub
答案 1 :(得分:0)
通常的说法是:
If IsNull(MyControl) Then
另请参阅:Access VBA: If Form Value <> NULL then run query else, end if. - not doing anything
答案 2 :(得分:0)
在我看来,这可能取决于组合框的格式?如果是数字,那么
If Len(Me.YearToBeBuilt & vbNullString) = 0
不起作用。因为Me.YearToBeBuilt的值为0,所以上面的值返回1.
我想知道是否有更强大的方法?也许
Me.YearToBeBuilt.ListIndex = -1