Если [ComboBox] является пустым оператором в VBA / Access 2007 - PullRequest
2 голосов
/ 24 сентября 2010

У меня есть форма с одним 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, так что, возможно, мой синтаксис неверен?

Ответы [ 3 ]

4 голосов
/ 24 сентября 2010

Попробуйте с

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
0 голосов
/ 10 ноября 2014

Мне кажется, что это может зависеть от формата поля со списком? Если это число, то

If Len(Me.YearToBeBuilt & vbNullString) = 0

не работает. Поскольку Me.YearToBeBuilt имеет значение 0, и поэтому вышеприведенное возвращает 1.

Мне интересно, есть ли более надежный метод? Может быть,

Me.YearToBeBuilt.ListIndex = -1
0 голосов
/ 24 сентября 2010
...