MsgBox

03/10/2007 - 03:19 por Beneco | Informe spam
Muy buenas a todos de ante mano mil gracias por su colobaraciòn.

Tengo la versiòn de excel 2003.
En un ComboBox tengo el sgte còdigo, que lo que hace es seleccionar un
elemento de la lista:
Private Sub UserForm_Activate()
Dim item As Variant
For Each item In Range("F1:F6")
ComboBox.AddItem item.Value
Next item
End Sub

Lo que quiero es añadirle còdigo para que me muestre un mensaje, cuando
seleccione un elemento que no se encuentra en la lista.

El mensaje podrìa ser: Este cliente no existe desea crearlo?

S@lu2


Beneco

Preguntas similare

Leer las respuestas

#1 Beneco
04/10/2007 - 02:35 | Informe spam
Beneco


"Héctor Miguel" escribió:

hola, !

> En un ComboBox tengo el sgte codigo, que lo que hace es seleccionar un elemento de la lista:
> Private Sub UserForm_Activate()
> Dim item As Variant
> For Each item In Range("F1:F6")
> ComboBox.AddItem item.Value
> Next item
> End Sub
> Lo que quiero es a#adirle codigo para que me muestre un mensaje
> cuando seleccione un elemento que no se encuentra en la lista.
> El mensaje podria ser: Este cliente no existe desea crearlo?

1) [creo que] va a estar dificil *seleccionar* de un combo algun elemento que no este en la lista -?-
a menos [obviamente] que el combo tambien haga las veces de cuadro de edicion y lo telcees en el -?-

2) de ser dato introducido en el cuadro de edicion del combobox, la siguiente ves que llenes el combo...
[seguramente] ya no estariamos hablando del rango "F1:F6"
[aunque existen otros mecanismos para asignar los elementos a cuadros de lista y combos]

3) una -posible- alternativa es que dentro de los elementos que mandas al combo [ya sea el primero o el ultimo]
sea un texto-elemento como "Agregar nuevo [datos/clientes/...]"
y en el evento '_change' del combo compruebes si el .ListIndex es 0 [cero] o .ListCount -1 [el ultimo]
caso en el podrias solicitar confirmacion por un MsgBox para [cancelar o] agregar los datos nuevos :)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.




Disculpa Hector, parece que formulè mal la pregunta.

Es que el ListBox lo tengo en un FORMULARIO. Con el còdigo que te menciono
puedo seleccionar valores de la lista que se encuentra en la Hoja1.

El pròposito es que si el usuario digite algo que no este en la lista me
despliegue un mensaje y me de por ejemplo la posibilidad de abrir la Hoja2.

Sheets("Hoja2").Select

Respuesta Responder a este mensaje
#2 Héctor Miguel
04/10/2007 - 04:08 | Informe spam
hola, (...) ?

... el ListBox lo tengo en un FORMULARIO.



si es un ListBox o un ComboBox [ceo que] ya lo definiras con mas claridad segun tus necesidades :))

Con el codigo que te menciono puedo seleccionar valores de la lista que se encuentra en la Hoja1.



en el codigo que expones *asumes* que se trata de la hoja1, aunque en realidad toma los datos de la hoja *activa*
para asegurarte que el control se rellene con los datos de alguna hoja en especifico, califica la referencia completa [p.e.]

a) para la forma que expusiste en tu consulta original:
Private Sub UserForm_Activate()
Dim Celda As Range
For Each Celda In Worksheets("hoja X").Range("f1:f6")
ComboBox.AddItem Celda
Next
End Sub

b) otra forma sin los bucles de recorrido celda-por-celda:
Private Sub UserForm_Activate()
ComboBox.List = Worksheets("hoja X").Range("f1:f6").Value
End Sub

c) si no estas seguro de hasta que fila considerar el rango de origen para la lista...
Private Sub UserForm_Activate()
Witn Worksheets("hoja X")
ComboBox.List = Range(.Range("f1), .Range("f65536").End(xlUp)).Value
End With
End Sub

d) tambien podrias asigar un nombre al rango con el listado y usarlo como en la forma anterior:
Private Sub UserForm_Activate()
ComboBox.List = "Nombre_del_Rango_con_la_Lista"
End Sub

El proposito es que si el usuario digita algo que no este en la lista
me despliegue un mensaje y me de por ejemplo la posibilidad de abrir la Hoja2.
Sheets("Hoja2").Select



para este caso, y asumiendo que el listado del control *debiera* mantenerse actualizado...

a) [generalmente] no es necesario *seleccionar* los objetos para administrar sus propiedades [puedes *calificarlos*]

b) ya en tiempo de ejecucion, sera necesario *limpiar* el contenido del control y volverlo a rellenar con los datos actualizados
o agregar item-por-item los que se vayan agregando [siempre y cuando no se trate de un rango con nombre]
si es un rango con nombre, es necesario volver a establecerle la propiedad .List = "Nombre_del_Rango_con_la_Lista"

c) segun la opcion que resulte de tu preferencia, la forma para agregar elementos nuevos en el lugar de origen... queda *pendiente* :))

si cualquier duda [o informacion adicional]... comentas
saludos,
hector.

__ las consultas anteriores __
> En un ComboBox tengo el sgte codigo, que lo que hace es seleccionar un elemento de la lista:
> Private Sub UserForm_Activate()
> Dim item As Variant
> For Each item In Range("F1:F6")
> ComboBox.AddItem item.Value
> Next item
> End Sub
> Lo que quiero es a#adirle codigo para que me muestre un mensaje
> cuando seleccione un elemento que no se encuentra en la lista.
> El mensaje podria ser: Este cliente no existe desea crearlo?

1) [creo que] va a estar dificil *seleccionar* de un combo algun elemento que no este en la lista -?-
a menos [obviamente] que el combo tambien haga las veces de cuadro de edicion y lo telcees en el -?-

2) de ser dato introducido en el cuadro de edicion del combobox, la siguiente ves que llenes el combo...
[seguramente] ya no estariamos hablando del rango "F1:F6"
[aunque existen otros mecanismos para asignar los elementos a cuadros de lista y combos]

3) una -posible- alternativa es que dentro de los elementos que mandas al combo [ya sea el primero o el ultimo]
sea un texto-elemento como "Agregar nuevo [datos/clientes/...]"
y en el evento '_change' del combo compruebes si el .ListIndex es 0 [cero] o .ListCount -1 [el ultimo]
caso en el podrias solicitar confirmacion por un MsgBox para [cancelar o] agregar los datos nuevos :)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida