Como colocar el mismo formato de celdas a columna 2 del listboxt

Quiero saber el código para hacer para que cuando se habrá el userform1, en el combobox aparezca automáticamente el ítem "TODOS LOS MATERIALES".

Además cuando POR EJEMPLO escojo el ítem "FERRETERÍA" del combobox del userform1 en la columna 2 del listbox del userform1, aparece el precio de los materiales pero no salen con el mismo formato de celdas, es decir en el listbox no salen los precios en formato moneda o el formato de las celdas en donde están contenidos los precios de la hoja "FERRETERÍA"; y que también aplicara lo anterior, al momento de escoger otros items del combobox.

Pero el problemas más importante es este:

Al ejecutar el userform1 en las celdas de la columna descripción, cuya finalidad es escoger un material, en este caso el material "Bisagra gato omega 3". Quisiera una forma o fórmula más sencilla CONTENIDA EN LAS CELDAS DE LA COLUMNA CÓDIGO para que al momento de escoger un material de cualquier hoja de mi libro de excel en la columna código aparezca el código de dicho material y que tampoco me salga el error N/A en cualquiera de las celdas de la columna código cuando no halla ningún material en la celdas descripción. Todo lo anterior debo aplicarlo también para la columna UNIDAD y V/R UNIT.

He intentado realizar una fórmula pero solo me sirve para materiales de la hoja "FERRETERIA", la idea es que la fórmula abarque todos los materiales de las otras hojas(MALLAS, POSTES, TANQUES...).El problema es que si la adapto la fórmula que realice para solucionar este problema, la fórmula se vuelve muy larga y tediosa para las demás hojas que faltan, que son las hojas mallas, postes tanques. Puesto que aun me faltan realizar 100 hojas más de materiales, he allí lo complicado que se va a volver mi fórmula muy larga y tediosa como he dicho antes. No se si hay otra forma de solucionar esto.

Le agradezco mucho su colaboración ya que necesito o quiero personalmente hacer esto para agilizar las tareas de costos que se me presentan.

Le envío la hoja de excel a [email protected] con asunto juan00784.

2 respuestas

Respuesta
3

Te el código actualizado

Private Sub ComboBox1_Change()
    Filtrar_Material
End Sub
Private Sub TextBox1_Change()
    Filtrar_Material
End Sub
Private Sub TextBox2_Change()
    Filtrar_Material
End Sub
'
Sub Filtrar_Material()
'Por Dante Amor
    If ComboBox1.ListIndex = -1 Or ComboBox1.Value = "" Then
        MsgBox "Selecciona una hoja"
        ComboBox1.SetFocus
        Exit Sub
    End If
    '
    Select Case ComboBox1.Value
        Case "TODOS LOS MATERIALES"
            hojas = Array("FERRETERIA", "MALLAS", "POSTES", "TANQUES", "ACEROS", "SOBRANTES")
        Case Else
            hojas = Array(ComboBox1.Value)
    End Select
    '
    ListBox1.Clear
    For h = LBound(hojas) To UBound(hojas)
        Set h1 = Sheets(hojas(h))
        For i = 5 To h1.Range("B" & Rows.Count).End(xlUp).Row
            If TextBox1.Value = "" Then t1 = h1.Cells(i, "C") Else t1 = TextBox1.Value
            If TextBox2.Value = "" Then t2 = h1.Cells(i, "D") Else t2 = TextBox2.Value
            '
            If LCase(h1.Cells(i, "C").Value) Like "*" & LCase(t1) & "*" And _
               LCase(h1.Cells(i, "D").Value) Like "*" & LCase(t2) & "*" Then
                ListBox1.AddItem h1.Cells(i, "C").Value
                ListBox1.List(ListBox1.ListCount - 1, 1) = Format(h1.Cells(i, "E").Value, "$ #,##0.00")
                ListBox1.List(ListBox1.ListCount - 1, 2) = h1.Name
                ListBox1.List(ListBox1.ListCount - 1, 3) = i
            End If
        Next i
    Next h
End Sub
'3)Aceptar el valor elegido y capturarlo en la celda activa
Private Sub CommandButton2_Click()
    'validaciones
    If ActiveSheet.Name <> "Hoja1" Then
        MsgBox "Debe seleccionar una celda de la hoja 1"
        Exit Sub
    End If
    If ActiveCell.Column <> Columns("C").Column Then
        MsgBox "Debe seleccionar una celda de la columna C"
        Exit Sub
    End If
    If ListBox1.ListIndex = -1 Then
        MsgBox "Debe seleccionar una código del listbox"
        Exit Sub
    End If
    '
    hoja = ListBox1.List(ListBox1.ListIndex, 2)
    fila = ListBox1.List(ListBox1.ListIndex, 3)
    '
    'Llenar datos en la hoja
    i = ActiveCell.Row
    Cells(i, "B").Value = Sheets(hoja).Cells(fila, "B").Value   'cod
    Cells(i, "C").Value = Sheets(hoja).Cells(fila, "C").Value   'desc
    Cells(i, "D").Value = Sheets(hoja).Cells(fila, "D").Value   'uni
    Cells(i, "F").Value = Sheets(hoja).Cells(fila, "E").Value   'vr
    Unload Me
End Sub
'4)Cerrar el formulario
Private Sub CommandButton1_Click()
    Unload Me
End Sub
'
Private Sub UserForm_Activate()
    ListBox1.ColumnCount = 2
    ComboBox1. AddItem "FERRETERIA"
    ComboBox1. AddItem "MALLAS"
    ComboBox1. AddItem "POSTES"
    ComboBox1. AddItem "TANQUES"
    ComboBox1. AddItem "ACEROS"
    ComboBox1. AddItem "SOBRANTES"
    ComboBox1. AddItem "TODOS LOS MATERIALES"
    '
    ComboBox1.Value = "TODOS LOS MATERIALES"
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda
.

'

[

.

Otra vez muchas gracias

En el código tengo unas dudas respecto a estas líneas no sé qué significan o que hacen:

ListBox1.List(ListBox1.ListCount - 1, 2) = h1.Name

                ListBox1.List(ListBox1.ListCount - 1, 3) = i

En estas dos líneas de código porque se coloca 2 para la variable hoja y porque se coloca 3 para la variable fila

hoja = ListBox1.List(ListBox1.ListIndex, 2)

    fila = ListBox1.List(ListBox1.ListIndex, 3)

Estoy almacenando en el listbox el nombre de la hoja y la fila donde está el código. De esa forma cuando seleccionas un dato del listbox, puedes saber, en cuál hoja y en cuál fila se encuentra ese código, para después solamente poner en la hoja los datos

Cells(i, "B").Value = Sheets(hoja).Cells(fila, "B").Value   'cod
Respuesta
1

Esto te puede aportar algo más a lo ya dicho

https://youtu.be/0UuR_zRQCB4

https://youtu.be/smL4A-aRjCM

https://youtu.be/smL4A-aRjCM

Visita https://programarexcel.com descarga cientos de ejemplos de macros gratis

suscribe a https://youtube.com/programarexcel tutoriales sobre macros de excel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas