Копировать данные из выпадающего списка в таблицу в последовательных строках - PullRequest
0 голосов
/ 05 января 2020

Я работаю с тремя ComboBox'ами, которые отображают определенные данные. Когда я нажимаю кнопку, я хочу отправить выбранные данные в заданную таблицу, которая находится на другой рабочей таблице , из которой выполняется код. Пока это то, что у меня есть:

Private Sub BotonAgregar_Click()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("_items")

ws.Cells(2, 1) = CajaMes
ws.Cells(2, 2) = CajaConcepto
ws.Cells(2, 3) = CajaValor

CajaMes = Empty
CajaConcepto = Empty
CajaValor = Empty

End Sub

В этом коде я успешно отправляю данные всех трех полей на вкладку _items в нужных ячейках, но только в первом экземпляре. Если я хочу отправить дополнительные данные, первая строка заменяется. Я хочу отправить все в один ряд под следующий. Любая помощь?

Ответы [ 2 ]

1 голос
/ 06 января 2020

Проблема в том, что вы не обновляете номер строки для отправки данных, поэтому он продолжает перезаписывать ячейки одной и той же строки.

Есть много способов получить последнюю пустую строку в таблице, в зависимости от того, как настроены ваши данные, но ниже приведен простой пример:

Private Sub BotonAgregar_Click()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("_items")

Dim LastRow As Long
'getting the last row, nb. we add 1 to the LastRow so we put the data in the next empty line
LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
If LastRow < 2 Then LastRow = 2 'just making sure it starts at 2 and not lower

ws.Cells(LastRow, 1) = Me.CajaMes.value
ws.Cells(LastRow, 2) = Me.CajaConcepto.value
ws.Cells(LastRow, 3) = Me.CajaValor.value

Me.CajaMes.value = Null
Me.CajaConcepto.value = Null
Me.CajaValor.value = Null

End Sub

Теперь это должно сделать то, что вам нужно

0 голосов
/ 05 января 2020

, если эти Caja... являются вашими комбинированными окнами в пользовательской форме, и вы используете Empty, чтобы они не отображали какой-либо элемент, протестируйте этот код, пожалуйста:

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("_items")

ws.Cells(2, 1).value = Me.CajaMes.value
ws.Cells(2, 2).value = Me.CajaConcepto.value
ws.Cells(2, 3).value = Me.CajaValor.value

Me.CajaMes.ListIndex = -1
Me.CajaConcepto.ListIndex = -1
Me.CajaValor.ListIndex = -1

Но, если нет комбо-значения (не выбран ни один элемент) функция вернет ошибку с указанной строкой c ...

Если ваши поля со списком имеют тип ActiveX, оставаясь на странице, попробуйте следующий код:

Dim ws As Worksheet, cbCM As ComboBox, cbCon As ComboBox, cbCjV As ComboBox
    Set ws = ActiveSheet
      Set cbCM = ws.OLEObjects("CajaMes").Object
      Set cbCon = ws.OLEObjects("CajaConcepto").Object
      Set cbCjV = ws.OLEObjects("CajaValor").Object
    ws.Cells(2, 1).value = cbCM.value
    ws.Cells(2, 2).value = cbCon.value
    ws.Cells(2, 3).value = cbCjV.value

    cbCM.ListIndex = -1
    cbCon.ListIndex = -1
    cbCjV.ListIndex = -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...