Выбор Изменить Бедствие
От двух до трех вопросов
Вы должны использовать CountLarge
вместо Count
. Если вы выберете слишком много ячеек, Count
вызовет Run-time error '6': Overflow
. Попробуйте сделать это, выбрав все ячейки на листе (CTRL+A
).
Если вы выберите диапазон в столбце A
, невозможность вычисления Target.Offset(, -1)
приведет к Run-time error '1004': Application-defined or object-defined error
.
* 1018. * Если выбрано несколько ячеек, то
Target.Offset(,-1).Value
приведет к массиву, который нельзя сравнить с
0
, что приведет к
Run-time error '13': Type mismatch
.
Возможное решение
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const ColumnNumber As Long = 4
Const ColumnOffset As Long = -1
Const OffsetValue As Long = 0
Dim C As String
With Target
If .Column + ColumnOffset < 1 Or .Cells.CountLarge > 1 Then Exit Sub
If .Column = ColumnNumber And .Offset(, ColumnOffset) = OffsetValue Then
C = Target.Offset(, ColumnOffset).Address
UserForm1.Show
End If
End With
End Sub