Excel VBA меняет высоту строки на основе значения поиска

У меня есть книга с двумя листами. Первый имеет 2 столбца данных. Второй – отформатированное расписание. Я хочу найти значения в первом столбце данных в расписании, затем:

Замените данные во втором столбце. Увеличьте высоту строки ячейки с новым значением на 5. Измените шрифт всех ячеек в расписании на Calibri.

Это то, что я до сих пор, но он не работает:

Public Sub FindReplace() Dim AllCells As Range Dim myList As Range Dim myRange As Range Dim myHeight As Double Set AllCells = Sheets("Sheet 1").Cells AllCells.Font.Name = "Calibri" Set myList = Sheets("FindReplace").Range("A1:C200") Set myRange = Sheets("Sheet 1").Cells For Each cel In myList.Columns(1).Cells myRange.Select Selection.Find(What:=cel.Value, LookIn:=xlFormulas, LookAt:=xlWhole).Activate ActiveCell.RowHeight = myHeight myHeight = myHeight + 5 Selection.RowHeight = myHeight myRange.Replace cel.Value, cel.Offset(0, 2), LookAt:=xlWhole Next cel End Sub 

Пожалуйста помоги

Попробуй это:

 Option Explicit Public Sub FindReplace() Dim myList, myRange, CelA, celB As Range Set myRange = Sheets("T3").Cells myRange.Font.Name = "Calibri" Set myList = Sheets("T2").Range("A1:c200") For Each CelA In myList.Columns(1).Cells If CelA <> "" Then Set celB = myRange.Cells.Find(What:=CelA.Value, LookIn:=xlFormulas, LookAt:=xlWhole) If Not celB Is Nothing Then If celB.RowHeight < 410 Then celB.RowHeight = celB.RowHeight + 5 myRange.Replace CelA.Value, CelA.Offset(0, 2), LookAt:=xlWhole End If End If Next CelA End Sub 

Что-то вроде этого может работать:

 Option Explicit Public Sub FindReplace() Dim AllCells As Range Dim myList As Range Dim myRange As Range Dim myHeight As Double Dim cel 'not declared in your code, but its a good idea to do it Set AllCells = Sheets("T3").Cells AllCells.Font.Name = "Calibri" Set myList = Sheets("T2").Range("A1:C200") Set myRange = Sheets("T3").Cells For Each cel In myList.Columns(1).Cells myRange.Parent.Activate myRange.Select 'Selection.Find(What:=cel.Value, LookIn:=xlFormulas, LookAt:=xlWhole).Activate myHeight = myHeight + 5 If myHeight < 410 Then 'Selection.RowHeight = myHeight ActiveCell.RowHeight = myHeight End If myRange.Replace cel.Value, cel.Offset(0, 2), LookAt:=xlWhole Next cel End Sub 

Что изменилось?

  • Название листов.
  • активный лист элемента cel активируется с помощью myRange.Parent.Activate
  • Вводится условие для высоты 410.
  • Вариант явно сверху

В общем, код не имеет высокого качества, потому что он использует Select и Activate и это противоречит наилучшим методам производительности и отладки.

  • Поиск определенного типа String в Visual Basic и его замена
  • Как установить диапазон с помощью функции поиска
  • Возвращаемый индекс элемента в массиве Excel VBA
  • Функция Excel vba .Find () в списке дат, которые отображаются как #
  • Если найти дату, тогда сделайте ... - VBA Excel
  • VBA Range найти в 1 столбце, чтобы показать / скрыть другой столбец
  • Заменить запятую точкой с запятой только в 3 столбцах с помощью VBA в файле CSV.
  • Как добавить поиск следующего матча?
  • Excel: поиск списка строк в определенной строке с использованием формул массива?
  • Функция «найти» VBA находит неправильную ячейку
  • Параметры поиска Trim перед поиском с помощью Find
  • Interesting Posts

    Excel выделяет ячейку согласованной даты

    Копирование и вставка ячеек, если Дублирующие столбцы, Excel Macro

    Измените файл Excel в ASP.NET «на лету»

    Как создать файл CSV, если он не существует?

    условное форматирование с помощью vlookup

    Формула Excel COUNTIFS и подсчет непустых ячеек

    диапазон копирования, выбранный из листа в выпадающем списке на другой лист

    переносить данные и удалять дубликаты на excel или sql

    Я бы хотел как можно быстрее (в excel VBA) определить, существует ли одна строка в другом месте – возможно, функция «включает»?

    Таблица сводной таблицы Excel (сколько людей, которые купили A, купили B и т. Д.),

    Извлечение минуты из функции времени Excel в ячейку

    Подсказка содержимого ячейки превосходит

    Как получить аналогичное значение в SQL как получение в Excel

    Скрыть строки с таким же serial_nr, если они отфильтрованы в первом листе

    Итерации через имена рабочих листов excel, когда офис не установлен с помощью vb6

    Давайте будем гением компьютера.