Страницы: 1
RSS
Заливка ячейки цветом после выполнения макроса
 
Добрый день, уважаемые пользователи, читатели и гуру замечательной программы.
Написал макрос на выполнение формулы для сбора данных по функции VLOOKUP. Выполняется всё как надо. Но встал вопрос, как сделать так чтобы при не пустом значении ячейки, происходила заливка выбранных ячеек. На данный момент заливка идет всех выбранных ячеек, без результата сбора данных. Пустая она остается или всё же заполняется значением.
Код макроса:
Код
Sub Макрос4()
Application.ScreenUpdating = False
  ActiveCell.FormulaR1C1 = _        "=IFERROR(VLOOKUP(RC[-1],Таблица1,2,0),"""")"
      With Selection.Interior
       .Pattern = xlSolid
       .PatternColorIndex = xlAutomatic
       .Color = 65535
       .TintAndShade = 0
       .PatternTintAndShade = 0 
   End With
   Selection.FillDown
   ActiveSheet.ShowAllData
   Range("G:G").Select
   Selection.Copy
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _       :=False, Transpose:=False
   Application.CutCopyMode = False
   Range("G8").Select
End Sub
Пожалуйста помогите. Если можно то прямо с изменениями данного кода.
Спасибо
Изменено: Tamagafk - 20.02.2021 06:57:20
 
Tamagafk, покажите файл пример, а наугад
Код
Sub Макрос4()
Application.ScreenUpdating = True
  ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Таблица1,2,0),"""")"
  If ActiveCell <> "" Then
      With Selection.Interior
       .Pattern = xlSolid
       .PatternColorIndex = xlAutomatic
       .Color = 65535
       .TintAndShade = 0
       .PatternTintAndShade = 0
   End With
   End If
   Selection.FillDown
   ActiveSheet.ShowAllData
   Range("G:G").Select
   Selection.Copy
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
   Application.CutCopyMode = False
   Range("G8").Select
End Sub

Изменено: Mershik - 26.02.2021 11:14:44
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, спасибо, но к сожалению нет. Выкладываю пример.
 
Tamagafk, ну крутой файл, а описание задачи будет?
Не бойтесь совершенства. Вам его не достичь.
 
так наобум

Код
Sub Макрос4()
Dim LastRow As Long, Rng As Range

    Application.ScreenUpdating = False
    LastRow = Cells(Rows.Count, "H").End(xlUp).Row 'последняя строка в столбце H
    Set Rng = Range("I4:I" & LastRow)
    With Rng
        .Formula = "=IFERROR(VLOOKUP(H4,Таблица1,2,0),"""")"
        .Value = .Value
        .SpecialCells(xlCellTypeConstants, 18).Interior.Color = 65535
    End With
    'если надо снять Автофильтр
    'If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Range("I2").Select
    Application.ScreenUpdating = True
End Sub
Изменено: New - 27.02.2021 18:26:46
 
Mershik, необходимо чтобы происходила заливка выбранных ячеек, и только в тех, в которых результат формулы VLOOKUP не равен пустому значению. На данный момент происходит заливка всех выбранных ячеек, не зависимо осталась ячейка пустой или получила какое-то значение.
 
New, добрый день. Пробую применить Ваш код к своему реестру. Ошибок не выдает, но и сбор информации происходит не корректно. К примеру если искомое значение "1", формула не подставляет значение "рыба". Или если искомое значение "5", формула подставляет значение "какао", вместо "масло"
 
Хелп! Помогите пожалуйста
Страницы: 1
Наверх