Necesito que la información que se ingrese desde el formulario no sustituya la existen en la hoja de excel.

Pose una bases de datos de cuatro columnas, esta se muestra en una listbox, y trato de programar un botón de AGREGAR que permita enviar información a una plantilla.

El caso que el boto de AGREGAR tiene la siguiente configuración:

Private Sub CommandButton1_Click()

Sheets("RDM").Activate

On Error Resume Next
conta = 0
For X = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(X) = True Then
conta = conta + 1
End If
Next X
If conta = 0 Then
MsgBox "Debe seleccionar un item para copiar en hoja de Excel", vbInformation, "AVISO"
Exit Sub
End If

Dim fila, FILAEDIT As Integer

Set a = Sheets("RDM")
FILAEDIT = a.Range("B" & Rows.Count).End(xlUp).Row + 1
fila = Me.ListBox1.ListIndex

a.Cells(FILAEDIT, "C") = ListBox1.List(fila, 0)
a.Cells(FILAEDIT, "D") = ListBox1.List(fila, 1)
a.Cells(FILAEDIT, "E") = ListBox1.List(fila, 2)
a.Cells(FILAEDIT, "J") = ListBox1.List(fila, 3)

FILAEDIT = FILAEDIT + 1

ListBox1.Clear

End Sub

El problema: carga la información en la plantilla, pero cuando necesito agregar otra, sustituye la existente. Necesito que se vayan agregan en forma de lsta en la platilla, es decir, una después la otra

3 Respuestas

Respuesta
1

H o l a

Va

Private Sub CommandButton1_Click()
'Act. Por Aortiz
Sheets("RDM").Activate
'
On Error Resume Next
conta = 0
For X = 0 To Me.Listbox1.ListCount - 1
If Me.Listbox1.Selected(X) = True Then
conta = conta + 1
End If
Next X
If conta = 0 Then
MsgBox "Debe seleccionar un item para copiar en hoja de Excel", vbInformation, "AVISO"
Exit Sub
End If
'
Dim fila, FILAEDIT As Integer
Set a = Sheets("RDM")
FILAEDIT = a.Range("B" & Rows.Count).End(xlUp).Row + 1
'
For i = 0 To Listbox1.ListCount - 1
'
    a.Cells(FILAEDIT, "C") = Listbox1.List(i, 0)
    a.Cells(FILAEDIT, "D") = Listbox1.List(i, 1)
    a.Cells(FILAEDIT, "E") = Listbox1.List(i, 2)
    a.Cells(FILAEDIT, "J") = Listbox1.List(i, 3)
    FILAEDIT = FILAEDIT + 1
Next i
Listbox1.Clear
End Sub

Valora para finalizar saludos!

ahora sucede que ingresa todos los datos que existen en la base de datos

Puedes mostrar tu hoja origen y planilla

Respuesta
1

Te anexo la actualización

Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    Dim fila As Integer, u As Integer, h As Object
    Set h = Sheets("RDM")
    If ListBox1.ListIndex = -1 Then
        MsgBox "Debe seleccionar un item para copiar en hoja de Excel", vbInformation, "AVISO"
        Exit Sub
    End If
    '
    'en la siguiente instrucción debes poner una columna que siempre tenga datos
    'Supongo que la columna C siempre tiene datos
    u = h.Range("C" & Rows.Count).End(xlUp).Row + 1
    fila = Me.ListBox1.ListIndex
    h.Cells(u, "C") = ListBox1.List(fila, 0)
    h.Cells(u, "D") = ListBox1.List(fila, 1)
    h.Cells(u, "E") = ListBox1.List(fila, 2)
    h.Cells(u, "J") = ListBox1.List(fila, 3)
    'listbox1.Clear
End Sub

Lo importante para saber cuál es la última fila con datos, es necesario saber cuál es la columna que siempre tiene datos. En el ejemplo de la macro puse la columna "C", en tu código tenías la columna "B", pero en la columna "B" no estás colocando información, solamente colocas información en las columnas "C", "D", "E" y "J".


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta

Checa si te sirve este ejemplo:

http://sintad.com.mx/macros%20excel/macro%20que%20agrega%20registros%20a%20una%20tabla%20con%20un%20formulario.html 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas