VBA拆分函数不允许为空
我是一个noob,需要帮助我如何更改代码以允许null,因为会有null值。我从另一篇文章中提取了这段代码,并对其进行了调整以符合我的目的。我正在创建一个表,并将代码从一个表拆分为一个零件,然后将它们拆分为已创建的表,拆分为一个零件。它在脚本的codelist=split(!code,,)部分持续显示错误无效使用null。零件表中的“代码”字段可能有多个代码,这些代码用逗号分隔,没有空格。我想把它们分成几行 之前: 之后: 代码如下:VBA拆分函数不允许为空,vba,ms-access,Vba,Ms Access,我是一个noob,需要帮助我如何更改代码以允许null,因为会有null值。我从另一篇文章中提取了这段代码,并对其进行了调整以符合我的目的。我正在创建一个表,并将代码从一个表拆分为一个零件,然后将它们拆分为已创建的表,拆分为一个零件。它在脚本的codelist=split(!code,,)部分持续显示错误无效使用null。零件表中的“代码”字段可能有多个代码,这些代码用逗号分隔,没有空格。我想把它们分成几行 之前: 之后: 代码如下: Sub split() Dim dbb As
Sub split()
Dim dbb As DAO.Database
Dim tdff As DAO.TableDef
Dim fldd As Field
Set dbb = CurrentDb()
Set tdff = db.CreateTableDef("SplitCodes_Part")
Set flddA = tdff.CreateField("ID", dbText, 250)
Set flddB = tdff.CreateField("Bookid", dbText, 250)
Set flddC = tdff.CreateField("Imagefile", dbText, 250)
Set flddD = tdff.CreateField("Code", dbText, 250)
Set flddE = tdff.CreateField("ext_Remark", dbText, 250)
flddE.AllowZeroLength = True
tdff.Fields.Append flddA
tdff.Fields.Append flddB
tdff.Fields.Append flddC
tdff.Fields.Append flddD
tdff.Fields.Append flddE
tdff.Fields.Refresh
dbb.TableDefs.Append tdff
dbb.TableDefs.Refresh
Dim rss As DAO.Recordset
Dim rss_out As DAO.Recordset
Dim x As Long
Dim SplitCodes() As Variant
Set rss = CurrentDb.OpenRecordset("SELECT id, bookid, imagefile, code, ext_remark from part")
Set rss_out = CurrentDb.OpenRecordset("SplitCodes_Part")
With rss
Do
CodeList = Split(!Code, ",")
For x = LBound(CodeList) To UBound(CodeList)
rss_out.AddNew
rss_out!Code = CodeList(x)
rss_out!imagefile = rss!imagefile
rss_out!bookid = rss!bookid
rss_out!id = rss!id
rss_out!EXT_REMARK = rss!EXT_REMARK
rss_out.Update
rss_out.AddNew
Next x
.MoveNext
Loop Until .EOF
End With
rss_out.Close
Set rs_out = Nothing
rss.Close
Set rss = Nothing
dbb.TableDefs.Refresh
End Sub
筛选出具有空代码的记录:
如果发生这种情况,你希望发生什么!代码为空?如果有一个值,则输出一行,如果中有多个值!代码,每个值一行。那么,如果中没有值,会发生什么呢!代码,一行,没有行,还有什么?
CodeList=Split(!Code&“,”,”)
如果您只是希望它在没有内容时不会出错……CodeList不是声明的变量,splitcode是。模块标题中是否有显式选项?您可以使用NZ
函数来避免空值。如果为空,我希望它跳过记录并移动到下一个。一旦我开始工作,我会尝试这些建议。谢谢大家的建议!我将null添加到select查询和代码&“”,但我得到了一个新错误“NO CURRENT RECORD”,表中有一条记录。使用:Do Until.EOFTo为具体起见,它突出显示codelist=Split(!code&“”,“,”),并声明错误。它有LOOP Until.EOF..我应该把它放在其他地方吗?弄明白了。必须创建一个if语句,如果没有代码,则跳过它。
Set rss = CurrentDb.OpenRecordset("Select ID, Bookid, Imagefile, Code, ext_remark From part Where Code Is Not Null")