Форма пользователя. При вставке из формы в ячейку выделяется диапазон нескольких ячеек, VBA. UserForm. Why i see Selected Range by 6-20 cells when I Insert ONE value from ListBox of a Form to a Cell
Приветствую! Вся суть - в названии. Как это убрать? Даже костыль в виде выделения одной ячейки (той, в которую вставлял) после вставки — не помогает
Скрины и Коды
Скрин (Вставляю в A988)
Скрин формы
Код формы
Код
Option Base 1
Option Explicit
Option Compare Text
'====================================================================================================
Dim aChoose, msk$
'====================================================================================================
Private Sub bQuit_Click()
Unload Me
End Sub
'====================================================================================================
Private Sub UserForm_Initialize()
aChoose = [_choose].Value2
FILE_Sort aChoose, 1, UBound(aChoose, 1)
Me.lb.List = aChoose
End Sub
'====================================================================================================
Private Sub tb_Change()
msk = LCase$(tb.Value)
If Len(msk) Then ArrayFilter Else Me.lb.List = aChoose
End Sub
'====================================================================================================
Private Sub lb_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
pbChoose = lb.List(lb.ListIndex): Unload Me
End Sub
'====================================================================================================
Private Sub ArrayFilter()
Dim aRes()
Dim r&, n&
msk = "*" & msk & "*"
ReDim aRes(UBound(aChoose, 1))
For r = 1 To UBound(aChoose, 1)
If aChoose(r, 1) Like msk Then n = n + 1: aRes(n) = aChoose(r, 1)
Next r
Me.lb.Clear
If n Then ReDim Preserve aRes(n): Me.lb.List = aRes
Me.tb.SetFocus
End Sub
'====================================================================================================
'====================================================================================================
Private Sub tb_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 38 Or KeyCode = 40 Then lb.SetFocus
End Sub
'====================================================================================================
Private Sub lb_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then pbChoose = lb.List(lb.ListIndex): Unload Me
End Sub
'====================================================================================================
Код обработки вставки (разнесение по ячейкам). Он не при чём
Код
Option Base 1
Option Explicit
'====================================================================================================
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim sep$, i&: sep = " " & ChrW$(8594) & " КОД "
If Target.Row = 1 Or Target.Column <> 1 Then Exit Sub
If Len(ActiveCell) Then MsgBox "Нельзя выбрать код в ЗАПОЛНЕННУЮ ячейку!", vbCritical, "ОШИБКА": Exit Sub
pbChoose = "": FILE_FRM_SRCH.Show
If Len(pbChoose) = 0 Then Exit Sub
i = InStrRev(pbChoose, sep)
If i = 0 Then MsgBox "Разделитель «" & sep & "» Кода и его Описания НЕ НАЙДЕН!", vbCritical, "ОШИБКА": Exit Sub
ActiveCell.Value2 = Mid$(pbChoose, i + Len(sep))
ActiveCell.Offset(0, 1).Value2 = Left$(pbChoose, i - 1)
End Sub
'====================================================================================================
Важно: при пошаговой отладке такого поведения не обнаружено Выявил закономерность: выделяется область от вставки до ячейки, которая находилась ЗА формой в момент даблклика по позиции — то есть, как будто формы не было
UPD (решение):Cancel = True Забыл отменить сам даблклик на листе Оставлю тему — может кому пригодится
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄