Saltar al contenido

Insertar texto de listbox en rango limitado

publicado

Buenos dias, necesito por favor si alguien me puede dar una solucion para el siguiente problema, he creado un macro para insertar unos materiales de un listado en una hoja, los materiales estan en otra aparte y los ingreso mediante un useform que tiene un textbox, un listbox y una command button, cuando escribo algo en el textbox el me filtra el listado de materiales y me da las opciones en el listbox, y al seleccionar el que necesito del listbox solo le doy doble click o clickeo el command button y el material se inserta en la celda que este activa en ese momento, en cualquiera.

el codigo es este:

--------------------------------

Private Sub CommandButton7_Click()

ActiveCell = ListBox1

ActiveCell.Offset(1, 0).Select

ListBox1.ListIndex = -1

End Sub

Private Sub TextBox1_Change()

With Hoja161

.[F3] = TextBox1 & "*"

.[E2].CurrentRegion.AdvancedFilter _

Action:=xlFilterCopy, CriteriaRange:=.[F2:F3], _

CopyToRange:=.[G2], Unique:=False

If .[G3] = Empty Or TextBox1 = Empty Then

ListBox1.RowSource = ""

Else

ListBox1.RowSource = .Range(.[G3], .[G65536].End(xlUp)).Address(External:=True)

End If

End With

End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

ActiveCell = ListBox1

ActiveCell.Offset(1, 0).Select

ListBox1.ListIndex = -1

End Sub

--------------------

Hasta ahi todo bien, el problema es que quiero que no se ingrese en cualquier celda sino en un rango limitado de celdas, un rango que previamente yo halla creado y que cuando la celda activa este fuera de ese rango me de un mensaje donde me avise que no se puede porque la celda esta fuera del rango, hasta ahora logre hacerlo pero solo para una celda, es decir le doy el nombre "Celda" (o el que sea) y lo agrego y el solo me deja agregar el material a esa celda, si selecciono cualquier otra me dice error, pero por mas que trato no puedo lograr que ese rango permitido sea mayor, es decir que en vez de ser solo una celda "B22" sea el rango "B22:B27"

Dejo el codigo que he modificado

----------------------

Private Sub CommandButton8_Click()

If ActiveCell.Address = Range("Celda").Address Then

ActiveCell = ListBox2

ActiveCell.Offset(1, 0).Select

ListBox2.ListIndex = -1

Else: MsgBox ("Celda Incorrecta para agregar equipos")

End If

End Sub

Private Sub TextBox2_Change()

With Hoja162

.[F3] = TextBox2 & "*"

.[E2].CurrentRegion.AdvancedFilter _

Action:=xlFilterCopy, CriteriaRange:=.[F2:F3], _

CopyToRange:=.[G2], Unique:=False

If .[G3] = Empty Or TextBox2 = Empty Then

ListBox2.RowSource = ""

Else

ListBox2.RowSource = .Range(.[G3], .[G65536].End(xlUp)).Address(External:=True)

End If

End With

End Sub

Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

If ActiveCell.Address = Range("Celda").Address Then

ActiveCell = ListBox2

ActiveCell.Offset(1, 0).Select

ListBox2.ListIndex = -1

Else: MsgBox ("Celda Incorrecta para agregar equipos")

End If

End Sub

------------------------------------------

No se como lo puedo modificar.

Ejemplo.zip

Featured Replies

publicado
  • Autor

Ok modificado, espero que asi si proceda, mis disculpas.

En el ejemplo el command button 1 "Insertar Material" tiene el codigo que puse primero y me inserta el material en cualquier celda.

El command button 2 "Insertar Equipo" tiene el codigo limitado a solo insertar en la celda B14, Con el nombre "Celda".

Quiero que se puede insertar en el rango que corresponde, por ejemplo que el de insertar equipo me permita hacerlo en el rango B14:B18, pero haciendolo con nombre de rango porque bien puedo necesitar insertarle mas filas para agregar mas de 5 materiales o eliminar si me estan sobrando.

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.