Выделите ячейку, если в тексте ячейки есть определенное слово

#excel #vba

#excel #vba

Вопрос:

Я хочу выделить красным цветом все ячейки, содержащие слова «Цвет» и «Ширина».

С помощью имеющегося у меня кода я ввожу значение ячейки. Я хочу ввести слова «Цвет» и «Ширина».

 Sub test()    

aaa = InputBox("Enter value 1:")
bbb = InputBox("Enter value 2:")

Dim myrange As Range
Set myrange = ThisWorkbook.Worksheets("Tabell").UsedRange

For Each cell In myrange.Cells

    If cell.Value = aaa Or cell.Value = bbb Then
        cell.Interior.Color = 255
    End If

Next

End Sub
  

введите описание изображения здесь

Ответ №1:

Вы можете использовать Like .

редактировать — обновлено, чтобы разрешить ввод нескольких терминов (непроверенных)

 dim terms as new collection, term, deleteMe as boolean

do
    term = Trim(InputBox("Enter value (leave blank to end entry)"))
    if len(term)>0 then
        terms.add term
    else
        exit do
    end if
loop

if terms.count=0 then exit sub '<< no terms to check for

For Each cell In myrange.Cells

    deleteMe = true

    for each term in terms
        if not cell.value like term amp; "*" then
            deleteMe = false 
            exit for
        end if
    next term

    if deleteMe then cell.value = ""
next cell
  

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

1. Привет, Тим! Спасибо за ваш ответ 🙂

2. Я хочу, чтобы то, что я ввожу, было оставлено, а остальное было удалено. Итак, если, например, если я напишу: Объект и цвет, то таблица должна выглядеть как картинка, которую я отправил. т.е. все остальное должно быть удалено, поэтому остается только объект Bara и цвет. т.е. door1, door2 …. и желтый, зеленый…. Поэтому вместо того, чтобы отмечать то, что я пишу красным цветом, следует — Удалить всю остальную информацию

3. пожалуйста, мне нужна помощь с другой вещью: мой код просматривает забытое, увиденное сейчас:

4. Sub test() aaa = InputBox(«Информацию о каком объекте вы хотите отобразить:») Затемните myrange как диапазон, установите myrange = ThisWorkbook. Рабочие листы («Tabell»). Используйте диапазон для каждой ячейки в myrange. Ячейки, если нет (cell. Значение типа aaa и «*»), затем ячейка. Значение = «» End, если следующий конечный подраздел

5. Но проблема в том, что вы можете один раз записать то, что оно должно сохранить. То есть пользователь может ввести только один раз, а затем он удалит все, кроме того, что он пишет. Но я хочу, чтобы пользователь мог ввести несколько раз, прежде чем удалять все остальное. То есть я хочу, чтобы пользователь написал, например: Objects, Traps И SEN если он напишет слово END, то программа должна в конечном итоге спросить его, хочет ли он написать несколько вещей. Итак, я хочу, чтобы пользователь мог написать несколько вещей, а затем, когда он закончит писать END, а затем он перестанет его спрашивать.