首页 > 解决方案 > Excel VBA:当一个字符串是单元格中包含的文本值时,如何在 While 语句中使用 StrComp?

问题描述

返回错误的代码是以下内容的第一行:

    While StrComp(selectedRecipe, dataSheet.Cells(i, 1)) <> 0
             recipeRow = recipeRow + 1
             i = i + 1
    Wend

我得到的调试与 While 语句行本身存在问题。此代码包含在用户窗体上的 OK 按钮单击事件下,其中 selectedRecipe 定义为主工作表子中的公共字符串变量。“i”在这个私有子中被定义为一个整数。基本上,代码是在从下拉组合框中选择 selectedRecipe 后查找工作表的哪一行包含 selectedRecipe 中包含的字符串值(selectedRecipe 正确返回并且没有与之相关的问题)。我假设我需要在“dataSheet.Cells(i,1)”前面有某种“转换”命令来将单元格值强化为字符串,但我不确定。谢谢!

标签: excelvba

解决方案


1) 确保 dataSheet 实际设置为有效工作表。2)正如共产国际所说,您需要从 1 开始,因为 Excel 是基于 1 而不是基于零。3)您需要确保不会溢出行数:

 Public Sub CheckRecipe()

    Dim selectedRecipe As String
    Dim i As Long
    selectedRecipe = "Test"
    i = 1

    While StrComp(selectedRecipe, ThisWorkbook.ActiveSheet.Cells(i, 1).Value) <> 0 _
        And i < ThisWorkbook.ActiveSheet.UsedRange.Rows.Count
        i = i + 1
    Wend

End Sub

推荐阅读