Editar campos de una hoja desde un listbox

Se que esta respuesta esta formulada, pero no logro que me funcione, necesito por favor ayuda con la edición, quisiera poder editar un campo desde listbox, tengo 3 columnas la ultima con un campo numérico que es la que quiero editar, tengo esto:

Private Sub CommandButton1_Click()
End Sub
Private Sub ListBox1_Click()
'Asignando valores a cada textbox
With Me.ListBox1
    Me.TextBox1.Text = .List(.ListIndex, 0)
    Me.TextBox2.Text = .List(.ListIndex, 1)
    Me.TextBox3.Text = .List(.ListIndex, 2)
End With
End Sub
Private Sub UserForm_Initialize()
Sheets("P").Visible = True
Worksheets("P").Select
   'Numero de columnas
    ListBox1.ColumnCount = 3
   'Activanco el encabezado de columnas
    ListBox1.ColumnHeads = True
   'Asignando ancho a cada columna de izquierda a derecha
    ListBox1.ColumnWidths = "80;80;50"
   'Le indicamos de donde obtendra los datos
    ListBox1.RowSource = "PRECIOSXCLIENTE"
End Sub

entonces lo que quiero es modificar el valor mostrado en el textbox3 y que se guarde en la ubicacion de origen dentro de la hoja activa

1 respuesta

Respuesta
1

H o l a:

Te anexo el código para tu botón, entre líneas van unos comentarios.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    If ListBox1.ListIndex = -1 Then
        MsgBox "Selecciona un dato de la lista"
        Exit Sub
    End If
    'Con las siguientes instrucciones se encuentra la primer fila de tu rango
 'de datos: PRECIOSXCLIENTE
    'A la fila encontrada le sumamos el número de registro que seleccionaste en el listbo
    fil = Range("PRECIOSXCLIENTE").Cells(1, 1).Row + ListBox1.ListIndex
    'Asumo que la tercer columna de tu rango PRECIOSXCLIENTE, es la columna del precio, por
    'eso le sumo 2 a la columna inicial del rango PRECIOSXCLIENTE
    col = Range("PRECIOSXCLIENTE").Cells(1, 1).Column + 2
    'se pasa el valor del textbox como número a la celda
    Cells(fil, col) = CDbl(TextBox3)
End Sub

¡Gracias! 

infinito 

En el evento que quiera habilitar la edición de todos los textbox que debo cambiar.

gracias coloque esto y me funciono

Private Sub CommandButton1_Click()
'Por.Dante Amor
    If ListBox1.ListIndex = -1 Then
        MsgBox "Selecciona un dato de la lista"
        Exit Sub
    End If
    'Con las siguientes instrucciones se encuentra la primer fila de tu rango
 'de datos: PRECIOSXCLIENTE
    'A la fila encontrada le sumamos el número de registro que seleccionaste en el listbo
    fil = Range("PRECIOSXCLIENTE").Cells(1, 1).Row + ListBox1.ListIndex
    'Asumo que la tercer columna de tu rango PRECIOSXCLIENTE, es la columna del precio, por
    'eso le sumo 2 a la columna inicial del rango PRECIOSXCLIENTE
    col1 = Range("PRECIOSXCLIENTE").Cells(1, 1).Column + 0
    col2 = Range("PRECIOSXCLIENTE").Cells(1, 1).Column + 1
    col = Range("PRECIOSXCLIENTE").Cells(1, 1).Column + 2
    'se pasa el valor del textbox como número a la celda
    Cells(fil, col1) = TextBox1
    Cells(fil, col2) = TextBox2
    Cells(fil, col) = CDbl(TextBox3)
End Sub

O puede ser así:

Private Sub CommandButton1_Click()
'Por.Dante Amor
    If ListBox1.ListIndex = -1 Then
        MsgBox "Selecciona un dato de la lista"
        Exit Sub
    End If
    fil = Range("PRECIOSXCLIENTE").Cells(1, 1).Row + ListBox1.ListIndex
    col = Range("PRECIOSXCLIENTE").Cells(1, 1).Column
    Cells(fil, col) = TextBox1
    Cells(fil, col + 1) = TextBox2
    Cells(fil, col + 2) = CDbl(TextBox3)
    ListBox1.RowSource = "PRECIOSXCLIENTE"
End Sub

En la variable col tengo la columna 1 y solamente aumento para los otros textbox


Recuerda cambiar la valoración a la respuesta.

¡Gracias! 

mucho mejor excelente.

hola dante

disculpa por preguntar acá y no hacer una nueva pregunta es que tengo un problema con esto  y es que solo me modifica el primer rango los demás lo deja igual . es decir que no toma los cambio que hago en los otros text box solo en el texbox1

Pero la macro funcionaba bien, si le hiciste cambios a la macro y hay que revisar nuevas instrucciones, entonces crear una nueva pregunta, en el desarrollo de la pregunta escribe que va dirigida a Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas