如果[ComboBox]是VBA / Access 2007中的空语句

时间:2010-09-23 21:48:17

标签: ms-access forms vba ms-access-2007 access-vba

我有一个包含一个ComboBox(YearToBeBuilt)和两个textBox字段(CostYearofExpenditureCost)的表单。所有控件都链接到主表,一旦在表单上进行了选择/输入,表格就会更新。

我在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所以也许我的语法不正确?

3 个答案:

答案 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