Excel VBA: как использовать StrComp в операторе while, если одна строка представляет собой текстовое значение, содержащееся в ячейке? - PullRequest
0 голосов
/ 21 ноября 2018

Код, возвращающий ошибку, является первой строкой следующего:

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

Полученная отладка имеет проблемы с самой строкой оператора While.Этот код содержится в событии нажатия кнопки «ОК» в пользовательской форме, а selectedRecipe определен как переменная общедоступной строки в основной части рабочего листа.«i» определяется как целое число в этом частном подпрограмме.По сути, код состоит в том, чтобы найти, какая строка листа содержит строковое значение, содержащееся в selectedRecipe после того, как selectedRecipe выбран из выпадающего списка (selectedRecipe возвращается правильно и не имеет проблем, связанных с ним).Я предполагаю, что мне нужно иметь какую-то команду «преобразования» перед «dataSheet.Cells (i, 1)», чтобы закрепить значение ячейки в виде строки, но я не уверен.Спасибо!

1 Ответ

0 голосов
/ 21 ноября 2018

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...