Существует ли код VBA / макроса для поиска и выбора первой ячейки на листе с жирным текстом? - PullRequest
0 голосов
/ 22 марта 2019

Я получаю отчет о работе от одного из наших поставщиков.Отчет представляет собой серию отчетов разных форматов, которые они помещают в Excel по вертикали.Я собираюсь разобрать каждый из этих отчетов на отдельной вкладке и очистить лишние строки / столбцы, потому что в текущем формате это просто ужасно.

Я нашел фрагменты, которые яЯ собрал все вместе, чтобы удалить лишние строки и столбцы, как только у меня есть данные на отдельных вкладках, но часть, с которой я борюсь, это разбор каждого отчета на его собственной вкладке.Ниже я попробовал то, что отлично работает с отчетами с тем же заголовком, но когда вы проходите частичную обработку общего отчета, заголовки меняются.Единственное, что кажется общим для каждого отчета на этом листе, это то, что заголовок отчета выделен жирным шрифтом, а затем все, что находится ниже, до начала следующего отчета, не выделено жирным шрифтом.Есть ли способ отредактировать приведенное ниже, чтобы диапазон, который он находит, переходил от первой строки с жирным текстом к следующей строке с жирным текстом, за исключением одного?

Dim findrow As Long, findrow2 As Long
findrow = Range("A:A").Find("Employee Updates", Range("A1")).Row
findrow2 = Range("A:A").Find("Employee Updates", Range("A" & 
findrow)).Row
Range("A" & findrow & ":BG" & findrow2 - 1).Select
'selects rows between employee updates header'

Selection.Cut 'cuts and pastes to a new tab'
Sheets.Add After:=ActiveSheet
ActiveSheet.Paste[enter image description here][1]

1 Ответ

0 голосов
/ 22 марта 2019

Прежде всего, не используйте «Выбор» в вашем коде.Это плохая практика, и она может создать для вас много разных проблем.

Что бы я вам посоветовал:

   Dim initialRow As Long, endRow As Long
   'starts on line 1 and goes on
   initialRow = 1
   'checks for bold in column 1
   Do While Cells(initialRow,1).Font.Bold = False
     initialRow = initialRow + 1
   Loop
   endRow = initialRow+1
   Do While Cells(endRow+1,1).Font.Bold = False
     endRow = endRowRow + 1
   Loop
   Range("A" & initialRow & ":BG" & endRow).Cut
   Sheets.Add After:=ActiveSheet
   ActiveSheet.Paste

Это даст вам область между одним жирным шрифтом и следующей.при условии, что они находятся в первом столбце, в противном случае вам, возможно, придется изменить его.Обратите внимание, что это нужно будет адаптировать в случае, если вы просматриваете все ячейки, особенно во избежание ошибки в последнем отчете, где не будет жирных ячеек, чтобы программа перестала их искать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...