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ó:

Mostrar la cita
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

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

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

Mostrar la cita
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

Mostrar la cita
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 __
Mostrar la cita
Ads by Google
Search Busqueda sugerida