Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Удаление строк по условию через форму
 
День добрый! Помогите с коррекцией кода пожалуйста. Создала пример, потому что мой файл слишком большой. Имеется лист "списание " в котором есть форма с комбобокс.  Данные в комбобокс берутся с листа "склад". Задача такая: при нажатии на кнопку в форме данные заносятся на лист "списание" и удаляются с листа "склад"  
 
Не удобней использовать было бы ListBox?
"Все гениальное просто, а все простое гениально!!!"
 
Код
Private Sub UserForm_Initialize()
    Me.Caption = "Списание" & "(" & Format(Now, "dd.mm.yyyy") & ")"
    zapolnit
End Sub


Private Sub zapolnit()
    With Sheets("Склад")
    Dim arr
    arr = .Range("A1", .Cells(Rows.Count, "A").End(xlUp)).value
    If Not IsArray(arr) Then
    ReDim arr(1 To 1)
    arr(1) = .Range("A2", .Cells(Rows.Count, "A").End(xlUp)).value
    End If
        Me.ComboBox1.List = arr
    End With

End Sub


Private Sub CommandButton1_Click()
Dim arr As Range, value, i As Long, i2 As Long
If Me.ComboBox1.ListIndex > 0 Then
    Application.ScreenUpdating = False
    
    With Sheets("Списание")
        i = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(i, 1) = Me.ComboBox1
        
        .Range(.Cells(1, 1), .Cells(i, 1)).Borders.LineStyle = xlContinuous
    End With
    
    With Sheets("Склад")
        i2 = Me.ComboBox1.ListIndex + 1
        .Rows(i2).EntireRow.Delete
        MsgBox "Информация внесена", 64, "Сообщение"
        Me.ComboBox1.ListIndex = -1
'        Unload Me
'        или
        zapolnit
        
    End With
    Application.ScreenUpdating = True
End If

End Sub
 
Цитата
Nordheim написал:
Не удобней использовать было бы ListBox?
вместо комбобокс? Я если честно с ним не работала, может и удобнее
 
Пример на скорую руку набросал.
"Все гениальное просто, а все простое гениально!!!"
 
Александр Моторин, Nordheim, благодарю) буду вникать и применять в практике))
 
Александр, подскажите пожалуйста, что нужно исправить, что бы первая позиция из комбобокса тоже была доступна для удаления?
Я так понимаю к первой позиции комбобокса нельзя применить 37 строчку кода?
Изменено: Kcuxa_xa - 12 Фев 2019 13:31:46
 
Цитата
Kcuxa_xa написал:Я так понимаю к первой позиции комбобокса нельзя применить 37 строчку кода?
Как это к позиции комбобокса применять строчки кода? Не совсем понятна сама фраза.
"Все гениальное просто, а все простое гениально!!!"
 
я имею ввиду, что с предложенным Александром кодом, все работает отлично, кроме одной строчки. Конкретнее первую позицию на складе (которая попадает в комбобокс формы, в моем примере это яблоки) не удается "списать" и удалить эту строчку из листа "склад" я так понимаю это из-за 37 строчки кода Me.ComboBox1.ListIndex = -1 ( так как позиция "яблоки " находится в первой строчке)
 
Kcuxa_xa,  На сколько я знаю если
Цитата
Kcuxa_xa написал:
Me.ComboBox1.ListIndex = -1
то комбобокс ничем не заполнен.
"Все гениальное просто, а все простое гениально!!!"
 
Наверное, а по какой причине тогда не возможно удаление этой строки?
 
Попробуйте для CommandButton1_Click так:
Код
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False

x = Sheets(1).UsedRange.Rows.Count
For i = 1 To x
    If Sheets(1).Cells(i, 1) = UserForm1.ComboBox1.Text Then _
        Sheets(1).Rows(i).Delete
Next
y = Sheets(2).UsedRange.Rows.Count
    If y = 1 And Sheets(2).Cells(y, 1) = "" Then y = 1 Else y = y + 1
        Sheets(2).Cells(y, 1) = UserForm1.ComboBox1.Text
        
Application.ScreenUpdating = True

MsgBox "Информация внесена", 64, "Сообщение"

Unload Me


End Sub
 
Цитата
GRIM
Спасибо Вам большое)
Изменено: Kcuxa_xa - 15 Фев 2019 19:50:42
 
Цитата
Kcuxa_xa написал:
Наверное, а по какой причине тогда не возможно удаление этой строки?
Покажите код в том виде, в котором вы его прикрутили к своему файлу. Возможно вы что-то не так изменили.
Страницы: 1
Читают тему (гостей: 1)
Наверх