crear ventana de ayuda

20/09/2007 - 15:16 por melomanus | Informe spam
hola a todos, estuve viendo una hoja de calculo con unas macros
(estaban protegidas con contraseña), y me sorprendio lo que hacian
(vaya mi ignorancia), permitia que al combinar un par de teclas (Ctrl
+ H) en una determinada columna, me apereciera una ventana de ayuda de
la columna en mencion, incluia las siguientes caracteristicas:
1. un cuadro de texto = donde se ingresaba el texto a buscar.
2. boton buzqueda = es obvio para que sirve
3. un cuadro de lista = para mostrar las coincidencia de dicha
busqueda.
4. boton aceptar = para elegir una opcion de las que nos muestra la
busqueda
5. boton cancelar = para salir.

al presionar aceptar escogiendo una de las opciones aperece en la
celda donde se pidio la ayuda (ctrl+h) la opcion escogida.

Pueden darme indicios como se puede generar cierta ayuda?

Gracias a todos.

Preguntas similare

Leer las respuestas

#1 melomanus
20/09/2007 - 22:25 | Informe spam
On 20 sep, 08:16, melomanus wrote:
hola a todos, estuve viendo una hoja de calculo con unas macros
(estaban protegidas con contraseña), y me sorprendio lo que hacian
(vaya mi ignorancia), permitia que al combinar un par de teclas (Ctrl
+ H) en una determinada columna, me apereciera una ventana de ayuda de
la columna en mencion, incluia las siguientes caracteristicas:
1. un cuadro de texto = donde se ingresaba el texto a buscar.
2. boton buzqueda = es obvio para que sirve
3. un cuadro de lista = para mostrar las coincidencia de dicha
busqueda.
4. boton aceptar = para elegir una opcion de las que nos muestra la
busqueda
5. boton cancelar = para salir.

al presionar aceptar escogiendo una de las opciones aperece en la
celda donde se pidio la ayuda (ctrl+h) la opcion escogida.

Pueden darme indicios como se puede generar cierta ayuda?

Gracias a todos.



Hola estuve investigando sobre la pregunta que hice temprano, y esto
es lo que pude acertar:

1. Se puede crear un UserForm en el Editor de Visual Basic y luego
llamarlo desde una macro asignadole la combinación de letras (hasta
todo fácil)

2. Luego de revisar varios Links, me encontre con esta
http://www.erlandsendata.no/english...fillunique
que basicamente llena el ListBox del UserForm ( y que realmente
conozco muy pocas instruccion alli mencionadas) como el
"Application.Volatile",
"Application.WorksheetFunction.Transpose(UniqueItemList)" entre otros.
Pero vaya pude pasar mis datos al ListBox con un poco de intuicion ;)

3. Pero ahi me quedé :( ahora necesito elegir la opcion que deseo del
listbox y pasarla a la celda que pidio el servicio.

4. Como puedo pasarle como parametro la columna que pidió el servicio
al userForm.

En fin... esas una de las preguntas (de las miles que tengo en mi
cabezota) para que me den unos alcances...


Agradeciendo de antemano su gentil atención.
Respuesta Responder a este mensaje
#2 Juan M
21/09/2007 - 09:42 | Informe spam
Hola,

3. Pero ahi me quedé :( ahora necesito elegir la opcion que deseo del
listbox y pasarla a la celda que pidio el servicio.





Para recuperar el valor seleccionado en un listbox y escribirlo por ejemplo
en [B2]

Range("B2")=ListBox1.List(ListBox1.ListIndex)

4. Como puedo pasarle como parametro la columna que pidió el servicio
al userForm.





Esto podrías hacerlo mediante activecell.column
Esto lo puedes capturar al inicio del procedimiento, o al inicializar el
formulario.


Respecto a lo que hace el Application.volatile según la ayuda

Marca una función definida por el usuario como volátil. Una función
volátil se debe actualizar siempre que se efectúe un cálculo en cualquier
celda de la hoja de cálculo.





Tómalo en consideración si tu hoja de cálculo o libro tiene cálculos
pesados.

Un saludo,
Juan

Consulta original

"melomanus" escribió

On 20 sep, 08:16, melomanus wrote:
hola a todos, estuve viendo una hoja de calculo con unas macros
(estaban protegidas con contraseña), y me sorprendio lo que hacian
(vaya mi ignorancia), permitia que al combinar un par de teclas (Ctrl
+ H) en una determinada columna, me apereciera una ventana de ayuda de
la columna en mencion, incluia las siguientes caracteristicas:
1. un cuadro de texto = donde se ingresaba el texto a buscar.
2. boton buzqueda = es obvio para que sirve
3. un cuadro de lista = para mostrar las coincidencia de dicha
busqueda.
4. boton aceptar = para elegir una opcion de las que nos muestra la
busqueda
5. boton cancelar = para salir.

al presionar aceptar escogiendo una de las opciones aperece en la
celda donde se pidio la ayuda (ctrl+h) la opcion escogida.

Pueden darme indicios como se puede generar cierta ayuda?

Gracias a todos.

Hola estuve investigando sobre la pregunta que hice temprano, y esto
es lo que pude acertar:

1. Se puede crear un UserForm en el Editor de Visual Basic y luego
llamarlo desde una macro asignadole la combinación de letras (hasta
todo fácil)

2. Luego de revisar varios Links, me encontre con esta
http://www.erlandsendata.no/english...fillunique
que basicamente llena el ListBox del UserForm ( y que realmente
conozco muy pocas instruccion alli mencionadas) como el
"Application.Volatile",
"Application.WorksheetFunction.Transpose(UniqueItemList)" entre otros.
Pero vaya pude pasar mis datos al ListBox con un poco de intuicion ;)

3. Pero ahi me quedé :( ahora necesito elegir la opcion que deseo del
listbox y pasarla a la celda que pidio el servicio.

4. Como puedo pasarle como parametro la columna que pidió el servicio
al userForm.

En fin... esas una de las preguntas (de las miles que tengo en mi
cabezota) para que me den unos alcances...


Agradeciendo de antemano su gentil atención.
Respuesta Responder a este mensaje
#3 melomanus
21/09/2007 - 19:18 | Informe spam
On 21 sep, 02:42, "Juan M" wrote:
Hola,

>> 3. Pero ahi me quedé :( ahora necesito elegir la opcion que deseo del
>> listbox y pasarla a la celda que pidio el servicio.

Para recuperar el valor seleccionado en un listbox y escribirlo por ejemplo
en [B2]

Range("B2")=ListBox1.List(ListBox1.ListIndex)

>> 4. Como puedo pasarle como parametro la columna que pidió el servicio
>> al userForm.

Esto podrías hacerlo mediante activecell.column
Esto lo puedes capturar al inicio del procedimiento, o al inicializar el
formulario.

Respecto a lo que hace el Application.volatile según laayuda

>> Marca una función definida por el usuario como volátil. Una función
>> volátil se debe actualizar siempre que se efectúe un cálculo en cualquier
>> celda de la hoja de cálculo.

Tómalo en consideración si tu hoja de cálculo o libro tiene cálculos
pesados.

Un saludo,
Juan

Consulta original

"melomanus" escribió

On 20 sep, 08:16, melomanus wrote:



> hola a todos, estuve viendo una hoja de calculo con unas macros
> (estaban protegidas con contraseña), y me sorprendio lo que hacian
> (vaya mi ignorancia), permitia que al combinar un par de teclas (Ctrl
> + H) en una determinada columna, me apereciera una ventana deayudade
> la columna en mencion, incluia las siguientes caracteristicas:
> 1. un cuadro de texto = donde se ingresaba el texto a buscar.
> 2. boton buzqueda = es obvio para que sirve
> 3. un cuadro de lista = para mostrar las coincidencia de dicha
> busqueda.
> 4. boton aceptar = para elegir una opcion de las que nos muestra la
> busqueda
> 5. boton cancelar = para salir.

> al presionar aceptar escogiendo una de las opciones aperece en la
> celda donde se pidio laayuda(ctrl+h) la opcion escogida.

> Pueden darme indicios como se puede generar ciertaayuda?

> Gracias a todos.
> Hola estuve investigando sobre la pregunta que hice temprano, y esto
> es lo que pude acertar:

> 1. Se puede crear un UserForm en el Editor de Visual Basic y luego
> llamarlo desde una macro asignadole la combinación de letras (hasta
> todo fácil)

> 2. Luego de revisar varios Links, me encontre con esta
>http://www.erlandsendata.no/english...stboxfi...
> que basicamente llena el ListBox del UserForm ( y que realmente
> conozco muy pocas instruccion alli mencionadas) como el
> "Application.Volatile",
> "Application.WorksheetFunction.Transpose(UniqueItemList)" entre otros.
> Pero vaya pude pasar mis datos al ListBox con un poco de intuicion ;)

> 3. Pero ahi me quedé :( ahora necesito elegir la opcion que deseo del
> listbox y pasarla a la celda que pidio el servicio.

> 4. Como puedo pasarle como parametro la columna que pidió el servicio
> al userForm.

> En fin... esas una de las preguntas (de las miles que tengo en mi
> cabezota) para que me den unos alcances...

> Agradeciendo de antemano su gentil atención.- Ocultar texto de la cita -

- Mostrar texto de la cita -



Hola Juan ya pude resolver los temas gracias a tu ayuda, lo que si me
cuesta y vaya que estoy quemando cerebro pero nada, es hacer funcionar
el texto busqueda y su respectivo botoncito Buscar y que aparezca en
el ListBox solo las coincidencias que se escribe en el texto. Puden
darme un hilo de como hacerlo, aqui envio el codigo que encontre en un
link como se llena el listbox.

supongo que la clave esta en "jugar" con el Collection y volver a
cargar el listbox, pero como hago la busqueva en el objeto Collection
o quizá hay otra manera de hacerlo,, Muchas Gracias por el apoyo

Private Sub UserForm_Initialize()
Dim MyUniqueList As Variant, i As Long
'Get the userform's window handle
If Val(Application.Version) < 9 Then
mhWndForm = FindWindow("ThunderXFrame", Me.Caption) 'XL97
Else
mhWndForm = FindWindow("ThunderDFrame", Me.Caption)
'XL2000+
End If
With Me.lstSimple
.Clear ' clear the listbox content
MyUniqueList = UniqueItemList(Range("UnidadOrganica!C2:C39"),
True)
For i = 1 To UBound(MyUniqueList)
.AddItem MyUniqueList(i)
Next i
.ListIndex = 0 ' select the first item
End With
End Sub

Private Function UniqueItemList(InputRange As Range, HorizontalList As
Boolean) As Variant
Dim cl As Range, cUnique As New Collection, i As Long, uList() As
Variant
Application.Volatile
On Error Resume Next
For Each cl In InputRange
If cl.Formula <> "" Then
cUnique.Add cl.Value, CStr(cl.Value)
End If
Next cl
UniqueItemList = ""
If cUnique.Count > 0 Then
ReDim uList(1 To cUnique.Count)
For i = 1 To cUnique.Count
uList(i) = cUnique(i)
Next i
UniqueItemList = uList
If Not HorizontalList Then
UniqueItemList = _

Application.WorksheetFunction.Transpose(UniqueItemList)
End If
End If
On Error GoTo 0
End Function
Respuesta Responder a este mensaje
#4 Juan M
24/09/2007 - 11:47 | Informe spam
Hola,

Si vas a trabajar con una colección para llenar el listbox deberás
declararlo a nivel de módulo o formulario donde lo vayas a necesitar.
Por lo menos debe ser visible la colección para el formulario ya que desde
él vas a llenar el listbox.

En el evento click del CommandButton añade el código del final del mensaje.
Mis controles son un textbox (textbox1), un listbox (listbox1) y un
commandbutton
La comprobación se realiza en mayúsculas, ya que el operador like distingue
entre mayúsculas y minúsculas. Modifícalo según el criterio que necesites.

También puedes colocar el código en el evento KeyUp del textbox para que
cada vez que acabes de pulsar una letra el listbox se rellene con el nuevo
criterio.

Un saludo,
Juan

Inicio Código
Public MiColeccion as New Collection

Private Sub CommandButton1_Click()

Dim elemento As Variant

If TextBox1.Text <> "" Then
ListBox1.Clear
For Each elemento In MiColeccion
If UCase(elemento) Like UCase(TextBox1.Text) & "*" Then
ListBox1.AddItem elemento
End If
Next elemento
End If
End Sub

Fin Código

"melomanus" escribió

Hola Juan ya pude resolver los temas gracias a tu ayuda, lo que si me
cuesta y vaya que estoy quemando cerebro pero nada, es hacer funcionar
el texto busqueda y su respectivo botoncito Buscar y que aparezca en
el ListBox solo las coincidencias que se escribe en el texto. Puden
darme un hilo de como hacerlo, aqui envio el codigo que encontre en un
link como se llena el listbox.

supongo que la clave esta en "jugar" con el Collection y volver a
cargar el listbox, pero como hago la busqueva en el objeto Collection
o quizá hay otra manera de hacerlo,, Muchas Gracias por el apoyo

Private Sub UserForm_Initialize()
Dim MyUniqueList As Variant, i As Long
'Get the userform's window handle
If Val(Application.Version) < 9 Then
mhWndForm = FindWindow("ThunderXFrame", Me.Caption) 'XL97
Else
mhWndForm = FindWindow("ThunderDFrame", Me.Caption)
'XL2000+
End If
With Me.lstSimple
.Clear ' clear the listbox content
MyUniqueList = UniqueItemList(Range("UnidadOrganica!C2:C39"),
True)
For i = 1 To UBound(MyUniqueList)
.AddItem MyUniqueList(i)
Next i
.ListIndex = 0 ' select the first item
End With
End Sub

Private Function UniqueItemList(InputRange As Range, HorizontalList As
Boolean) As Variant
Dim cl As Range, cUnique As New Collection, i As Long, uList() As
Variant
Application.Volatile
On Error Resume Next
For Each cl In InputRange
If cl.Formula <> "" Then
cUnique.Add cl.Value, CStr(cl.Value)
End If
Next cl
UniqueItemList = ""
If cUnique.Count > 0 Then
ReDim uList(1 To cUnique.Count)
For i = 1 To cUnique.Count
uList(i) = cUnique(i)
Next i
UniqueItemList = uList
If Not HorizontalList Then
UniqueItemList = _

Application.WorksheetFunction.Transpose(UniqueItemList)
End If
End If
On Error GoTo 0
End Function
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida