Уважаемый KuklP подправил макрос формы, в котором задан программно диапазон работы формы с 7 по 30 строку столбцов D и Е. код: [vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim arr(), lr As Long, i As Long If Sh.Name = "база" Then Exit Sub If Target.Column < 4 Or Target.Column > 5 Then Exit Sub If Target.Row < 7 Or Target.Row > 30 Then Exit Sub r = Target.Row: c = Target.Column Select Case Target.Column Case 4 lr = Sheets(1).Cells(Sheets(1).Rows.Count, "C").End(xlUp).Row arr() = Sheets(1).Range("C1:C" & lr).Value Case 5 lr = Sheets(1).Cells(Sheets(1).Rows.Count, "D").End(xlUp).Row arr() = Sheets(1).Range("D1:D" & lr).Value End Select UserForm1.ListBox2.Clear For i = 2 To UBound(arr) If arr(i, 1) <> "" Then UserForm1.ListBox2.AddItem arr(i, 1) End If Next i UserForm1.Show End Sub
[/vba] Можно ли учесть в коде возможность уменьшения или увеличения диапазона посредством удаления или добавления строк. (Например оказалось, что закупок у меня больше чем 30 строк и я простым добавлением строк увеличиваю диапазон действия макроса формы и наоборот при уменьшении).
Уважаемый KuklP подправил макрос формы, в котором задан программно диапазон работы формы с 7 по 30 строку столбцов D и Е. код: [vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim arr(), lr As Long, i As Long If Sh.Name = "база" Then Exit Sub If Target.Column < 4 Or Target.Column > 5 Then Exit Sub If Target.Row < 7 Or Target.Row > 30 Then Exit Sub r = Target.Row: c = Target.Column Select Case Target.Column Case 4 lr = Sheets(1).Cells(Sheets(1).Rows.Count, "C").End(xlUp).Row arr() = Sheets(1).Range("C1:C" & lr).Value Case 5 lr = Sheets(1).Cells(Sheets(1).Rows.Count, "D").End(xlUp).Row arr() = Sheets(1).Range("D1:D" & lr).Value End Select UserForm1.ListBox2.Clear For i = 2 To UBound(arr) If arr(i, 1) <> "" Then UserForm1.ListBox2.AddItem arr(i, 1) End If Next i UserForm1.Show End Sub
[/vba] Можно ли учесть в коде возможность уменьшения или увеличения диапазона посредством удаления или добавления строк. (Например оказалось, что закупок у меня больше чем 30 строк и я простым добавлением строк увеличиваю диапазон действия макроса формы и наоборот при уменьшении).grh1
Либо исправить число 30 на бОльшее/меньшее, либо "объяснить" программе, к чему можно привязаться для определения последней строки. В Вашем примере есть какое-то условие, которое определяет последнюю строку?
Либо исправить число 30 на бОльшее/меньшее, либо "объяснить" программе, к чему можно привязаться для определения последней строки. В Вашем примере есть какое-то условие, которое определяет последнюю строку?Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Это я понимаю, но не годится так - каждый раз править код в зависимости от количества закупок. Привязаться можно к строке 7 или ячейки D7 и Е7 - они постоянны - меньше одной строки ж не будет.
Это я понимаю, но не годится так - каждый раз править код в зависимости от количества закупок. Привязаться можно к строке 7 или ячейки D7 и Е7 - они постоянны - меньше одной строки ж не будет.grh1
Вам же последнюю строку надо определить, а не первую. Например, найти строку со словом Начальник в первом столбце и вычесть 5. Это будет правильно?
Вам же последнюю строку надо определить, а не первую. Например, найти строку со словом Начальник в первом столбце и вычесть 5. Это будет правильно?Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816