Введениефильтры сценария Excel VBA заголовок неожиданно
У меня есть некоторые таблицы, как в следующем.
Вот заголовок на строках 16 и 17. Существует «заголовок» влево (не показан), среди предыдущих строк и столбцов, которые включает в себя картину, некоторые не табличные данные, а легенда и т. д., что здесь неважно. Текст заголовка в строке 16 обфускается, потому что причинам. Данные, выделенные жирным красным цветом, указывают на то, что эта точка выборки претерпела некоторый процесс. Вот фрагмент кода из сценария, который выделяет эти точки данных жирным красным цветом.
' Traverse columns applying redding until hitting the row end, Comment, or SpGr: whichever comes first
For currIndex = abcDateCol + 1 To lastCol
' Check for exit conditions:
If Cells(abcDateRowDesc, currIndex).Value() = "Comments" Then Exit For
If Cells(abcDateRowDesc, currIndex).Value() <> "" Then
If Cells(abcDateRowDesc, currIndex + 1).Value() = "process" Then
' Looks like we have a column of something Red-able
Columns(ColumnLetter(currIndex) & ":" & ColumnLetter(currIndex + 1)).Select
Selection.AutoFilter ' Turn on autofiltering (hopefully)
Selection.AutoFilter Field:=2, Criteria1:="=1", Operator:=xlOr, Criteria2:="=e"
Selection.Font.ColorIndex = 3
Selection.Font.Bold = True
Selection.AutoFilter ' Turn off autofiltering
Columns(ColumnLetter(currIndex + 1) & ":" & ColumnLetter(currIndex + 1)).EntireColumn.Delete Shift:=xlToLeft
End If
End If
Next currIndex
Контекст
Здесь abcDateCol
относится к колонку АЕ, lastCol
относится к колонку AQ, abcDateRow
(не показаны, но доступны) и abcDateRowDesc
относятся к строкам заголовка 16 и 17 соответственно, а ColumnLetter
Функция - это определяемая пользователем функция, которая возвращает удобочитаемое письмо (-ы) для чтения с учетом номера столбца; это общая функциональность, которую вы, возможно, видели в другом месте или даже сделали сами.
Продолжим
Ничего, что условие в If Cells(abcDateRowDesc, currIndex).Value() = "Comments"
никогда не удовлетворяется из-за оплошности (я предполагаю, что) - два разных строках, гарантировано.
Давайте посмотрим, как выглядит таблица, прежде чем этот скрипт будет выполнен.
Итак, сценарий принимает пары столбцов, и для каждой пары столбцов она отмечает ячейки данных жирного шрифта красных, если правые соседние соты ячейки данных имеют 1 (или «е»?) (как логическое, отвечает на вопрос: «Была ли эта точка примера обработана каким-либо процессом?»), а затем удаляет столбец «процесс».
Проблема
клиент хочет безвозмездный заголовок ушел, так что они могут легко импортировать таблицу в любое решение у них есть. Удалите строки с 1 по 15, и это то, что я получаю.
Что в bleepity-звуковым сигналом случилось с головой? Я не понимаю, как подсвечивается эта первая строка. Это кажется слишком странным. Теперь перейдем к первой таблице.
Я заполнил «заголовок» с некоторым фиктивным текстом после скрипта, который выполняется. Ничего себе, первый ряд снова покраснел, на этот раз ad infinitum! Итак, эта проблема всегда существовала. О, и в первом столбце тоже! И он волшебным образом останавливается прямо над правильным заголовком, поэтому мы никогда его не увидим.
Вопросы,
Почему этот сценарий неожиданно покраснев первую строку и столбец? Можно ли это легко решить, или я смотрю на какую-то переписку? Если да, укажите мне в общем направлении.
Это помогает упомянуть, что эти электронные таблицы создаются из приложения Windows, а их сценарии выполняются до того, как пользователь имеет копию своей электронной таблицы. Кроме того, что касается второго изображения (таблица с показанными столбцами «процесс»), эта таблица не является тем, что обычно существует. Я создал его для этого сообщения, пропустив цикл сценария for
. Приложение использует выбранный шаблон электронной таблицы, который выглядит одинаково за вычетом данных, заполняет образцы данных и затем выполняет несколько сценариев над данными.
Я рассмотрел использование условного форматирования, но есть несколько десятков шаблонов электронных таблиц. Даже если я просто изменил тот, который мне нужен, я не могу изменить тот факт, что эти общие скрипты работают над ним. Я считаю, что мой лучший вариант - исправить сценарий. И я бы не стал менять сценарий для учета моего случая с краем. Вся экосистема кажется шелушащейся, но это просто субъективно.
Примечание
Я не являюсь автором этого сценария (или любой из VBA моей компании!). Я рассматриваю это налог на наследство, взимаемый с меня.
* Обновление
меня спросили, я проследил по этому коду. Прошу прощения, что я не включил эту информацию в свой первоначальный пост. Вот что я знаю. Selection.Font.ColorIndex = 3
превращает ячейки в выборку, которые удовлетворяют автофильтру плюс первая строка (две ячейки, так как в данный момент выбираются только два столбца), а Selection.Font.Bold = True
делает одинаковые ячейки жирным шрифтом тем же способом. Я подозреваю, что это имеет какое-то отношение к автофильтру, поэтому я собираюсь взглянуть на ответы сейчас.
(a) Пробовали ли вы пропустить код по одной строке за раз, чтобы определить, какая строка кода вызывает изменение этих ячеек на красный? (b) Вы проверили, что ячейки, которые стали красными, не стали красными из-за условного форматирования? например если в ячейке AG16 был установлен условный формат, который устанавливает ячейку в красный цвет, если '= 0 = IFERROR (IF (AG15 =« XYZ », 0,1), 0)», тогда он станет красным, когда ячейка переместится с AG16 на AG1. (Я просто делаю этот тест, исключительно для того, чтобы подчеркнуть, что сдвигающие ячейки могут привести к форматированию условного формата.) – YowE3K
Сначала я отвечу ** b **. Ни один из листов шаблонов не имеет условных правил форматирования. Я рад, что вы упомянули об этом, поскольку я не проверял ранее. Что касается ** a **, я пытаюсь сделать свою часть, прежде чем я попрошу сообщество помочь. Да, я проследил, я отредактирую свой пост, чтобы включить эту информацию, чтобы у меня не было смехотворно длинного комментария. Должен бежать, поэтому я буду редактировать дома или завтра утром. Еще раз спасибо. – jefff
Как раз перед выходом из системы, я вижу, что есть ответ. Я буду копаться в нем завтра, но, учитывая мое отслеживание, я подозревал, что это связано с автофильтром. – jefff