跳过循环中的空文本框

时间:2019-07-16 14:16:57

标签: vba ms-access

我有一个有效的代码,需要以连续的形式将其应用于我的所有记录。

Private Sub Befehl104_Click()

 While Me.CurrentRecord < Me.Recordset.RecordCount

      Me.WreckBreiteDD.Value = Round(WechselnD(Me.WreckBreiteDMS.Value), 7)
     Me.WreckLängeDD.Value = Round(WechselnD(Me.WreckLängeDMS.Value), 7)


DoCmd.GoToRecord Record:=acNext
Wend
End Sub

有时“ WreckBreiteDMS”为空,因此代码停止,因为无法执行功能“ WechselnD”。

如何跳过那些空的文本框?

已经在所有可能的位置尝试过“ Nz()”,没有任何帮助。

我认为我需要做类似的事情:

 If Me.WreckBreiteDD.Value = Round(WechselnD(Me.WreckBreiteDMS.Value), 7) = 0, DoCmd.GoToRecord:=acNext

但是我在snytax上遇到了一些问题。

谢谢!

2 个答案:

答案 0 :(得分:2)

示例 WreckLängeDMS是字符串,并且 WreckBreiteDMS是数字

Private Sub Befehl104_Click()

 While Me.CurrentRecord < Me.Recordset.RecordCount

     if not isnull(Me.WreckBreiteDMS.Value) then
         Me.WreckBreiteDD.Value = Round(WechselnD(Me.WreckBreiteDMS.Value), 7)
     end if
     if nz(Me.WreckLängeDMS.Value,"")<>"" then
         Me.WreckLängeDD.Value = Round(WechselnD(Me.WreckLängeDMS.Value), 7)
     end if


DoCmd.GoToRecord Record:=acNext
Wend
End Sub

答案 1 :(得分:1)

在if语句中的字符串(在您的情况下为Me.WreckBreiteDMS.Value)上使用len。从if语句中删除其余部分。

If Len(Nz(Me.WreckBreiteDMS.Value)) > 0 Then
    Me.WreckBreiteDD.Value = Round(WechselnD(Me.WreckBreiteDMS.Value), 7)
End If