VBA Если ячейка находится под определенной длиной, выделите и отобразите сообщение
Я пытаюсь написать макрос, который анализирует определенный столбец в электронной таблице Excel, ища записи длиной менее 9 символов, но больше 2, и если они найдены, отобразите сообщение и выделите ячейку, в которой было обнаружено это значение. Это может произойти несколько раз. Я написал следующий код:
Sub Highlight() Dim c As Range Dim LR As Integer Dim intCell As Long LR = Worksheets("Basket").Cells(Rows.Count, 6).End(xlUp).Row For intCell = 1 To 8 For Each c In Range("G20:G" & LR).Cells If Len(c.Value) < 9 And Len(c.Value) > 2 Then MsgBox "One or more of the codes is invalid. Correct the highlighted values." c.Cells(intCell).Interior.Color = vbYellow End If Next Next End Sub
Я не могу понять, что я делаю неправильно. Любая помощь будет принята с благодарностью.
- Как я могу написать макрос или условное форматирование, чтобы подсветить ячейку, если
- Выделять слова в ячейке (а не в ячейке), только используя целые слова?
- Выделите строки, где те же значения в столбцах A: B, но разные значения в столбце C
- Выделение используемых ячеек в определенной строке
- Выделите ячейки, где значение равно 3 раза подряд
- Автоматический код подсветки
- Hightlight active row / column в Excel без использования VBA?
- Подсчитывать и выделять ключевые слова в фразах
- Найти и выделить макрос с подтверждением
- Выделите поиск в Word в VBA
- Сравнение двух столбцов excel в веб-приложении asp.net в c # .net
- Выделите ячейки в MS excel 2007 двойным щелчком
- Выделяйте ячейки на основе 10-15 значений и альтернатив
Просто угадайте, что вы хотите выделить
Sub Highlight() Dim c As Range Dim LR As Integer Dim numProbs as long Dim sht as Worksheet Set sht=Worksheets("Basket") numProbs=0 LR = sht.Cells(Rows.Count, "G").End(xlUp).Row For Each c In sht.Range("G20:G" & LR).Cells If Len(c.Value) < 9 And Len(c.Value) > 2 Then c.entirerow.cells(1).Resize(1,8).Interior.Color = vbYellow numProbs=numProbs+1 End If Next if numProbs>0 Then msgbox "There were issues with " & numProbs & " rows. See yellow cells" end if End Sub
Попробуйте следующий код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("A1:a10")) Is Nothing Then If Len(Target) <= 9 And Len(Target) >= 2 Then MsgBox " Length of string is " & Len(Target) Target.Font.Bold = True End If End If End Sub
Я использовал диапазон A1: A10 для испытания.