Ограничение кода для запуска только в пределах определенного диапазона ячеек - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь создать Spin Button, которая будет редактировать активную ячейку, но только когда она находится в пределах определенного диапазона ячеек.Я хочу, чтобы код запускался, если активная ячейка находится в диапазоне ячеек Листа 1 J63: J97, и не работал, если он находится за пределами этого диапазона.

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)          
  SpinButton1.Value = Selection.Value
End Sub

Private Sub SpinButton1_Change()
  Selection.Value = SpinButton1.Value
End Sub

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

Попробуйте использовать Application.Intersect.Я определил отдельный Function для выполнения этой работы.
Этот код проверен и он работает :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If checkIntersection(Target, Range("J63:J97")) Then
        SpinButton1.Value = Selection.Value
    End If
End Sub

Private Sub SpinButton1_Change()
    If checkIntersection(Selection, Range("J63:J97")) Then
        Selection.Value = SpinButton1.Value
    End If
End Sub

'Check if Range1 and Range2 are intersecting
Function checkIntersection(range1 As Range, range2 As Range) As Boolean
    checkIntersection = Not Application.Intersect(range1, range2) Is Nothing
End Function
0 голосов
/ 07 апреля 2019

может проверить выбор с помощью Intersect

Private Sub SpinButton1_Change()
If Not Intersect(Selection, Range("J63:J97")) Is Nothing Then
Selection.Value = SpinButton1.Value
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("J63:J97")) Is Nothing Then
SpinButton1.Value = Selection.Value
End If
End Sub
...