Excel 正在尝试向函数添加另一个条件

Excel 正在尝试向函数添加另一个条件,excel,vba,Excel,Vba,我一直在使用这个函数,它工作得很好,但是当它没有找到从类别到列“1”的任何相关字符串时,它就会停止 我试图在下面的函数中添加一个条件,即如果列“1”字符串与类别字符串不匹配,则列“1”中有名称为的字符串,因此该函数将与条件一起使用列“永久” 如果字符串匹配,则下面相同的函数将起作用。非常感谢你的帮助 如果这个函数可以从Query转换成VBA函数,这将是一个很大的帮助 Private Function GetHtmlValues(Category As String, Condition As S

我一直在使用这个函数,它工作得很好,但是当它没有找到从
类别
列“1”
的任何相关字符串时,它就会停止

我试图在下面的函数中添加一个条件,即如果
列“1”
字符串与
类别
字符串不匹配,则
列“1”
中有名称为
的字符串
,因此该函数将与
条件一起使用
列“永久”

如果字符串匹配,则下面相同的函数将起作用。非常感谢你的帮助

如果这个函数可以从Query转换成VBA函数,这将是一个很大的帮助

Private Function GetHtmlValues(Category As String, Condition As String) As HtmlValues

Dim Result As HtmlValues
Dim TblHtmlValues As ListObject
Dim TableAddress As String
Dim strQuery As String
Dim Query As WbkQuery

Set TblHtmlValues = ThisWorkbook.Sheets("Sheet1").ListObjects("Table4")
TableAddress = TblHtmlValues.Range.Address
TableAddress = Replace(TableAddress, "$", "")


strQuery = "SELECT * FROM [" & LISTS_SHEET_NAME & "$" & TableAddress & "]" & _
    " WHERE Category = '" & Category & "'" & _
    " AND Condition = '" & Condition & "'"
    
Set Query = New WbkQuery
Query.ExecuteSql (strQuery)
While Not Query.RS.EOF
    
    Result.ConditionDescription = RecordsetHelpers.FieldToString(Query.RS.Fields("Condition Description"))
    Result.Description1 = RecordsetHelpers.FieldToString(Query.RS.Fields("Description 1"))
    Result.Description2 = RecordsetHelpers.FieldToString(Query.RS.Fields("Description 2"))

    Query.RS.MoveNext
Wend


Set TblHtmlValues = Nothing
Set Query = Nothing

    GetHtmlValues = Result
End Function

未经测试,但您应该看到总体思路:

“返回匹配记录的HTMLValues对象,否则不返回任何内容。”
私有函数GetHtmlValues(类别作为字符串,永久作为字符串,条件作为字符串)作为Htmlvalues
将结果变暗为HTMLValue
将TBLHTM左值设置为ListObject
Dim TableAddress作为字符串
作为字符串的Dim strQuery
作为WbkQuery的Dim查询
TableAddress=ThisWorkbook.Sheets(“Sheet1”).ListObjects(“Table4”).Range.Address
TableAddress=Replace(TableAddress,“$”,“”)
Set Query=New WbkQuery
'尝试第一个查询。。。
Query.ExecuteSql CategoryConditionSql(表地址、类别、条件)
Set Result=RSToHtmlValues(Query.RS)
'如果第一个查询没有结果,则使用'Permanent'运行第二个查询`
如果结果是什么,那么
Query.ExecuteSql类别条件SQL(表地址、永久、条件)
Set Result=RSToHtmlValues(Query.RS)
如果结束
GetHtmlValues=结果
端函数
'为类别/条件查询构造SQL
函数CategoryConditionSql(TableAddress为字符串,Category为字符串,Condition为字符串)
作为字符串的Dim strQuery
strQuery=“SELECT*FROM[”&列出工作表名称&“$”&表格地址&“]&”_
“其中Category=”&类别&“&”_
“和条件='”&条件&'”
端函数
'从RS返回HTMLvalues对象(如果RS没有记录,则返回nothing)
函数RSToHtmlValues(RS作为对象)作为Htmlvalues
将结果变暗为HTMLValue
如果不是卢比,那么
设置结果=新的HTMLValue
Result.ConditionDescription=RecordsetHelpers.FieldToString(RS.Fields(“条件描述”))
Result.Description1=RecordsetHelpers.FieldToString(RS.Fields(“Description 1”))
Result.Description2=RecordsetHelpers.FieldToString(RS.Fields(“Description 2”))
如果结束
设置RSToHtmlValues=结果
端函数

什么是WbkQuery?据我所知,那不是Excel对象。在你的问题中,
Col“1”
应该是什么意思?我很难将您的问题与您的代码联系起来。是的,它不是excel对象,而是为sql创建一个新的连接以运行,并且它在excel中工作。它返回记录集,并在记录上创建一个循环,它逐个接受该循环。“永久”是条件列中的值,还是类别列中的值?先生,类别列。非常感谢您提供的帮助。当我运行函数时,在第一个集合
结果
=RSToHtmlValues(Query.RS)上填充了一个错误
Compile error:Object required
@Tim Williams我不明白为什么会出现这样的情况。我确实努力尝试并搜索了解决问题的方法,但是仍然找不到任何解决方案。这个错误仍然存在。请调查问题。错误是,新的问题链接是@Tim WilliamsSir。这个变量可能有助于更好地
公共类型为HtmlValues ConditionDescription为字符串描述符1为字符串描述符2为字符串结束类型
@Tim William,我忘记分享了