Excel VBA: как выбрать определенные строки, которые будут затронуты при выборе - PullRequest
0 голосов
/ 04 февраля 2019

Используя Excel 365 на рабочем столе, я пытаюсь изменить высоту выбранной строки на 280:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Target.Calculate   
    For Each r In ActiveWindow.RangeSelection.Rows
        r.RowHeight = 280
    Next r
End Sub

Я хочу, чтобы код влиял только на выбор в определенных строках ("4: 499«).Я попытался использовать следующий код:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rng As Range: Set rng = Range("4:499")
    Target.Calculate
    For Each r In ActiveWindow.RangeSelection.Rows
        r.RowHeight = 280
    Next r
    If intersect(Target, rng) Is Nothing Then Exit Sub
End Sub

Как мне указать диапазон строк?

Ответы [ 2 ]

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

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

  1. Создать пересечениежелаемого диапазона и выбора пользователя
  2. Проверьте, является ли это пересечение пустым
  3. Если нет, примените желаемые действия к перекрестку

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   Dim newHeight As Long: newHeight = 280
   Dim minRow As Long: minRow = 4
   Dim maxRow As Long: maxRow = 499

   ' Define the range of rows we want the resizing to happen on
   Dim applicableRange As Range
   Set applicableRange = Range(Rows(minRow), Rows(maxRow))

   ' Intersect that with the range of the selection
   Dim affectedRange As Range
   Set affectedRange = Intersect(Target, applicableRange)

   ' If the intersection contains any rows (i.e. is not empty), apply the changes
   If Not affectedRange Is Nothing Then

      affectedRange.Calculate
      affectedRange.RowHeight = newHeight

   End If

End Sub
0 голосов
/ 04 февраля 2019

Чтобы просто запустить код, если выбранная ячейка находится в определенном диапазоне, вы можете сравнить свойство Row выбранного диапазона с номерами строк, в которых вы хотите, чтобы он находился.В вашем случае что-то вроде:

If Target.Row >= 4 And Target.Row <= 499 Then
    # Your code
EndIf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...