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.
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")
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