Вопрос:
В Excel, позвольте мне иметь данные в B2 с B7 и C2 до C7. В VBA я могу написать макрос, чтобы выбрать его:
Sub Macro1() Range(«B2:C7»).Select End Sub
Как мне переписать код так, чтобы он автоматически выбирал ячейки, которые не являются пустыми?
Если я удалю данные в ячейках B7 и C7, тогда я хочу, чтобы макрос выбирал только Range (B2: C6)
И если я добавлю данные в ячейки B8 и C8, тогда я хочу, чтобы макрос выбирал Range (B2: C8).
Мои данные всегда будут запускать B2, C2, и у меня не будет свободного пространства между данными.
Лучший ответ:
Ваши данные всегда начинаются с B2, C2 и не имеют пустой ячейки inbetween? Если это так, вы можете установить переменную как “последнюю заполненную строку”
lastRow = ActiveSheet.Range(«B» & Rows.Count).End(xlUp).Row Range(«B2:C» & lastRow).Select
и определите диапазон от B2 до последней строки C “
Ответ №1
Используйте цикл:
Sub qwerty() Dim rng As Range, r As Range, rSel As Range Set rng = Range(«B2:C7») Set rSel = Nothing For Each r In rng If r.Value <> «» Then If rSel Is Nothing Then Set rSel = r Else Set rSel = Union(rSel, r) End If End If Next r If Not rSel Is Nothing Then rSel.Select End Sub
Если вы хотите расширить область тестирования, используйте:
Range(«B2:C7»).CurrentRegion Ответ №2
Используйте функцию ‘SpecialCells’ объекта Selection
Sub Macro1() Range(«B2:C7»).Select For Each self in Selection.SpecialCells(xlCellTypeConstants) Debug.Print(self) Next End Sub