Перенос данных и подсчет из listbox в listbox - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, столкнулся задачей которую необходимо сделать в ексельке с VBA . Если таблица из 6 столбиков в которой указаны данные (на фото будет видно). У меня получилось сделать форму и запихнуть туда поисковую строку которая ищет по данные по одному из столбцов. Проблема состоит в том что я хочу путем выделения нужной строки, типа (заправка или восстановление) и количества, перенести данные из листбокса1 в листбокс2 и вывести результат суммы работы в лейбл. Как мне осуществить перенос данных? На данный момент поиск реализован вот так
Листинг программы
  1. Private Sub CommandButton1_Click()
  2. Unload Me
  3. End Sub
  4. Private Sub CommandButton2_Click()
  5. Dim RW As Long
  6. RW = ListBox1.List(ListBox1.ListIndex, 0)
  7. End Sub
  8. Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  9. Dim RW As Long
  10. RW = ListBox1.List(ListBox1.ListIndex, 0)
  11. ThisWorkbook.Worksheets("Лист3").Activate
  12. ActiveSheet.Range(Cells(RW, 1), Cells(RW, 6)).Select
  13. End Sub
  14.  
  15. Private Sub OptionButton1_Click()
  16. End Sub
  17. Private Sub tbName_Change()
  18. Dim LastRow As Long, i As Long, x As Long, Arr()
  19. Me.ListBox1.Clear
  20. With Sheets("Лист3")
  21. LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
  22. Arr = .Range(.Cells(2, 1), .Cells(LastRow, 6)).Value
  23. End With
  24. With ListBox1
  25. For i = 1 To UBound(Arr)
  26. If UCase(Arr(i, 2)) Like UCase(Me.tbName) & "*" Then
  27. .AddItem ""
  28. .List(x, 0) = i + 1
  29. .List(x, 1) = Arr(i, 1)
  30. .List(x, 2) = Arr(i, 2)
  31. .List(x, 3) = Arr(i, 3)
  32. .List(x, 4) = Arr(i, 4)
  33. .List(x, 5) = Arr(i, 5)
  34. .List(x, 6) = Arr(i, 6)
  35. x = x + 1
  36. End If
  37. Next
  38. End With
  39. End Sub

Решение задачи: «Перенос данных и подсчет из listbox в listbox»

textual
Листинг программы
  1. Private Sub CommandButton2_Click()
  2. Dim lbr1 As Long, lbr2#
  3.     lbr1 = ListBox1.ListIndex
  4.     lbr2 = Val(ListBox2.ListCount / 4)
  5. 'проверяем OptionButton на заполнение
  6. 'If (OptionButton1.Value + OptionButton2.Value) = 0 Then MsgBox "Выберете Заправка или Восстановление": Exit Sub
  7.  
  8. For i = 1 To 4
  9.    ListBox2.AddItem ""
  10.    ListBox2.List(lbr2, i - 1) = ListBox1.List(lbr1, i)
  11. Next
  12.  
  13. ListBox2.List(lbr2, 5) = IIf(OptionButton1.Value, OptionButton1.Caption, OptionButton2.Caption)
  14. ListBox2.List(lbr2, 4) = ListBox1.List(lbr1, IIf(OptionButton1.Value, 5, 6))
  15. Sum = Sum + ListBox2.List(lbr2, 4)
  16. Me.Label9.Caption = Sum
  17.  
  18. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы