Access 2010 VBA 类型不匹配(错误 13)或运行时错误 424(需要对象)
Access 2010 VBA Type mismatch (Error 13), or Runtime error 424 (Object Required)
我在 Access 2010 中创建 VBA 代码以执行 2 个操作时遇到问题:
如果我的 Access Table 中的 3 个地址行是 NULL
,或者匹配城市或国家名称 - 将它们导出到单独的 Excel 文件中需要人工审核
如果不是,则select一个或多个地址值到不同Access中的"Address"列Table.
这只是试用代码,这意味着我只是想展示我可以在输入所有 ElseIf
条件之前相应地导出值。
对于代码,我得到
"Type Mismatch" (Error 13) .
谷歌搜索后,我似乎分配 object/method 不正确。如果我从我引用的对象中删除 ""
我会得到一个不同的错误:
"Runtime error 424 (Object Required).
下面是代码。 "nmad_address_1" 的第一个实例在我 运行 之后突出显示并收到错误。
Public Sub EditFinalOutput()
'set loop variable
Dim i As Long
Dim ExportFile As String
'Open Reference Set
Set db = CurrentDb
Set qs = db.OpenRecordset("SunstarAccountsInWebir_SarahTest")
Set ss = db.OpenRecordset("1042s_FinalOutput_6")
'Set loop for entirety of recordset
For i = 0 To qs.RecordCount - 1
'ExportFile = "I:\Tax Team\Tax Team\Sean" & Format(i, "00") & ".xlsx"
If qs.Fields(("nmad_address_1" Is Null Or "nmad_address_1" = "nmad_city"
Or "nmad_address_1" = "Webir_Country") And ("nmad_address_2" Is Null Or
"nmad_address_2" = "nmad_city" Or "nmad_address_2" = "Webir_Country") And
("nmad_address_3" Is Null Or "nmad_address_3" = "nmad_city" Or
"nmad_address_3" = "Webir_Country")) Then
DoCmd.TransferSpreadsheet acImport, 10,
"SunstarAccountsInWebir_Charlie", "I:\Tax Team\Tax Team\Sean", 1
Else: qs.Edit
qs.Fields("box13c_Address") = 9999
qs.Update
End If
qs.MoveNext
Next i
'Close Reference Set
qs.Close
Set qs = Nothing
ss.Close
Set ss = Nothing
End Sub
这个:
If qs.Fields(("nmad_address_1" Is Null Or "nmad_address_1" = "nmad_city"
Or "nmad_address_1" = "Webir_Country") And ("nmad_address_2" Is Null Or
"nmad_address_2" = "nmad_city" Or "nmad_address_2" = "Webir_Country") And
("nmad_address_3" Is Null Or "nmad_address_3" = "nmad_city" Or
"nmad_address_3" = "Webir_Country")) Then
是废话。您正在将字符串与 null 和常量字符串相互比较。您实际上并没有比较任何字段值。我什至不知道哪些应该是字段名,哪些应该是字符串。
此外,您在查询中执行 SomeVar Is Null
。在 vba 中,您执行 IsNull(SomeVar)
.
尝试以下操作:
With qs.Fields
If IsNull(!nmad_address_1) Or !nmad_address_1 = "nmad_city" Or !nmad_address_1 = "Webdir_Country" 'etc...
End With
我在 Access 2010 中创建 VBA 代码以执行 2 个操作时遇到问题:
如果我的 Access Table 中的 3 个地址行是
NULL
,或者匹配城市或国家名称 - 将它们导出到单独的 Excel 文件中需要人工审核如果不是,则select一个或多个地址值到不同Access中的"Address"列Table.
这只是试用代码,这意味着我只是想展示我可以在输入所有 ElseIf
条件之前相应地导出值。
对于代码,我得到
"Type Mismatch" (Error 13) .
谷歌搜索后,我似乎分配 object/method 不正确。如果我从我引用的对象中删除
""
我会得到一个不同的错误:"Runtime error 424 (Object Required).
下面是代码。 "nmad_address_1" 的第一个实例在我 运行 之后突出显示并收到错误。
Public Sub EditFinalOutput()
'set loop variable
Dim i As Long
Dim ExportFile As String
'Open Reference Set
Set db = CurrentDb
Set qs = db.OpenRecordset("SunstarAccountsInWebir_SarahTest")
Set ss = db.OpenRecordset("1042s_FinalOutput_6")
'Set loop for entirety of recordset
For i = 0 To qs.RecordCount - 1
'ExportFile = "I:\Tax Team\Tax Team\Sean" & Format(i, "00") & ".xlsx"
If qs.Fields(("nmad_address_1" Is Null Or "nmad_address_1" = "nmad_city"
Or "nmad_address_1" = "Webir_Country") And ("nmad_address_2" Is Null Or
"nmad_address_2" = "nmad_city" Or "nmad_address_2" = "Webir_Country") And
("nmad_address_3" Is Null Or "nmad_address_3" = "nmad_city" Or
"nmad_address_3" = "Webir_Country")) Then
DoCmd.TransferSpreadsheet acImport, 10,
"SunstarAccountsInWebir_Charlie", "I:\Tax Team\Tax Team\Sean", 1
Else: qs.Edit
qs.Fields("box13c_Address") = 9999
qs.Update
End If
qs.MoveNext
Next i
'Close Reference Set
qs.Close
Set qs = Nothing
ss.Close
Set ss = Nothing
End Sub
这个:
If qs.Fields(("nmad_address_1" Is Null Or "nmad_address_1" = "nmad_city"
Or "nmad_address_1" = "Webir_Country") And ("nmad_address_2" Is Null Or
"nmad_address_2" = "nmad_city" Or "nmad_address_2" = "Webir_Country") And
("nmad_address_3" Is Null Or "nmad_address_3" = "nmad_city" Or
"nmad_address_3" = "Webir_Country")) Then
是废话。您正在将字符串与 null 和常量字符串相互比较。您实际上并没有比较任何字段值。我什至不知道哪些应该是字段名,哪些应该是字符串。
此外,您在查询中执行 SomeVar Is Null
。在 vba 中,您执行 IsNull(SomeVar)
.
尝试以下操作:
With qs.Fields
If IsNull(!nmad_address_1) Or !nmad_address_1 = "nmad_city" Or !nmad_address_1 = "Webdir_Country" 'etc...
End With