vba 中字符串的内联空检查

Inline null check for string in vba

我正在寻找一种方法在将字符串转换为日期之前检查它是否为空,我想避免的问题是 if-else 因为我必须在单个语句中对多个变量使用它:

Call MyObj.Insert(CInt(Me.ddlFiltroPD), _
                                    CInt(Me.Parent!ddlFiltroEsito), _
                                    CInt(Nz(ddlFiltroPD.Column(1))), _
                                    Nz(txtPuntoDebolezza, ""), _
                                    CInt(Nz(Me.ddlRilevanza, 0)), _
                                    Nz(txtInterventi, ""), _
                                    Nz(txtOwner, ""), _
                                    CDate(txtData1), _
                                    CDate(txtData2), _
                                    CDate(txtData3), _
                                    CDate(txtData4), _
                                    Nz(txtMotivazioneChiusura) _
            )

txtData1、txtData2、txtData3 和 txtData4 可以为空,当它们不为空时我必须将其转换为数据

我想创建一个函数来进行转换或使用一些临时变量,但我正在寻找更好的东西

您可以使用这个表达式:

IIf(txtdata1 = vbNullString, "", CDate(txtdata1))

我是这样解决的

Call MyObj.Insert(..., _
                      txtData1, _
                      txtData2, _
                      txtData3, _
                      txtData4, _
            )

MyObj.Insert 中,我将参数更改为变量,并使用 Format(txtData1, "YYYYMMDD")

转换参数