Цикл по столбцу до последней непустой строки, чтобы найти совпадающие данные через пользовательскую форму VBA

#excel #vba #loops #lookup #userform

#excel #vba #циклы #поиск #пользовательская форма

Вопрос:

Я застрял на этой небольшой проблеме. Вот как выглядят мои данные Excel:
введите описание изображения здесь

У меня есть пользовательская форма, которая запрашивает значения «Оттенок», «Значение Манселла» и «Цветность Манселла», и она должна выдавать значение в столбце D (название цвета) в качестве вывода в окне сообщения. Я пытаюсь выполнить цикл до последней непустой строки и проверить столбцы A, B, C на соответствие данным, а затем выдать соответствующий 4-й столбец в качестве выходных данных.

Это мой код VBA:

 Sub Result()

Dim r As Range
Dim LastRow As Long

SheetName = frmForm.cmbSheet
Hue = frmForm.txtHue
Value2 = frmForm.txtValue
Chroma = frmForm.txtChroma

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(SheetName)

LastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row
    For Each r In ws.Range("A2:A" amp; LastRow)
        If r = Hue amp; r.Offset(0, 1) = Value2 amp; r.Offset(0, 2) = Chroma Then
        MsgBox r.Offset(0, 3).Value
        Exit Sub
        End If
    Next r

MsgBox ("No color found for these Munsell color values!")

End Sub
 

Это базовая пользовательская форма:
введите описание изображения здесь

Каждый раз, когда я запускаю код, я получаю сообщение «Цвет не найден …». Несмотря на то, что я ввел точные совпадающие значения в пользовательскую форму.

Ответ №1:

Изменить

 If r = Hue amp; r.Offset(0, 1) = Value2 amp; r.Offset(0, 2) = Chroma Then
 

с

 If r = Hue and r.Offset(0, 1) = Value2 and r.Offset(0, 2) = Chroma Then
 

Комментарии:

1. Большое вам спасибо, я чувствую себя глупо из-за того, что так долго зацикливался на этом 🙂