En los VIDEOS N° 4 y 5 hablamos del uso de botones y menú desplegable dentro de una cinta o Ribbon.
Y en el VIDEO N° 52 le incorporamos un control del tipo TextBox.
En estos videos anteriores, hablamos sobre los diferentes argumentos: Label, Image, Screentip y otros como 'OnAction' para llamar a las macros de los botones y 'OnChange' para llamar a la macro en caso de un control TextBox.
Hoy vamos a agregar otro control a la cinta. Se trata de un ComboBox. Nos servirá para mostrar una cantidad considerable de elementos, en lugar de llenar la cinta de botones.
Por ejemplo: lista de Proveedores, Clientes, Usuarios, hojas de un libro para llegar hasta ellas sin necesidad de tener un botón de avance y otro para el regreso al menú principal.
Aquí, además de los argumentos propios a todos los botones de la cinta, veremos otros 3 argumentos que se necesitan programar:
- getItemCount: para obtener el número total de elementos a mostrar en el control desplegable.
- getItemID: el número del elemento seleccionado.
- getItemText: el texto del elemento seleccionado.
En el libro desarrollado según la siguiente imagen, donde necesitamos ir a la hoja seleccionada, no nos hace falta el 2do argumento: getItemID. Queda explicado para otros casos, como por ejemplo, evaluar qué ubicación ocupa el elemento seleccionado y según eso, seguir un procedimiento.
El código completo que colocamos en el editor OfficeRibbonx para un control del tipo ComboBox, se encuentra en el libro para descargar (ver enlace al pie). Allí también se encuentran las siguientes macros:
- Las macros al inicio del módulo donde guardaremos las subrutinas para cada botón de la cinta:
Option Explicit
Public Cinta As IRibbonUI
Sub CargarCinta(CintaDeExcel As IRibbonUI)
Set Cinta = CintaDeExcel
End Sub
Sub
irOtrosMeses(control As IRibbonControl, TextoSeleccionado As String)
On Error GoTo sinHoja
Sheets(TextoSeleccionado).Select
[B7].Select
Exit Sub
sinHoja:
MsgBox "No se encuentra la hoja
seleccionada.", , "Atención"
End
Sub
'cuenta
la cantidad de elementos que tendrá el control.
Sub
ObtenerNumerodeMeses(control As IRibbonControl, ByRef NumerodeOpciones)
Dim x
As Integer
x =
Sheets("Listas").Range("C" & Rows.Count).End(xlUp).Row
NumerodeOpciones =
Application.WorksheetFunction.CountA(Sheets("LISTAS").Range("C1:C"
& x))
End
Sub
'guarda
el nro de elemento que se ha seleccionado
Sub
ObtenerIdMes(control As IRibbonControl, NumeroOpcion As Integer, ByRef
nroElemento)
nroElemento =
Sheets("LISTAS").Cells(NumeroOpcion + 1, 3)
End
Sub
'guarda
el texto del elemento seleccionado
Sub
ObtenerTextoMes(control As IRibbonControl, NumeroOpcion As Integer, ByRef
TextoMes)
TextoMes =
Sheets("LISTAS").Cells(NumeroOpcion + 1, 3)
End Sub
NOTA: Para copiar todo el código de la Ribbon, abrir el Editor Office RibbonX y desde allí abrir este libro Excel, tal como se observa en la imagen:
No permite descargar el archivo
ResponderBorrarHola. El enlace es correcto. Quizás solo debas actualizar la página desde el navegador. No puedo dejarte aquí la imagen, pero puedes solicitarmelo a cibersoft_arg de yahoo.com.ar
BorrarHola, una consulta, porque en Sheets(TextoSeleccionado).Select, se pasa de frente a "No se encuentra la hoja seleccionada" y no copia el mes?. gracias por tu respuesta.
ResponderBorrarHola Francisco. Tendría que ver el código de tu cinta Ribbon. No entiendo eso de que 'se pasa de frente a...' Hay un Exit Sub para salir de la subrutina.
ResponderBorrarVoy a preparar un libro con la Ribbon instalada y luego lo dejaré aquí.
Sdos!
Gracias por su tiempo, le estoy muy agradecido.
BorrarAcabo de actualizar esta entrada con el nuevo link al libro de descarga. Allí ya se encuentra la cinta instalada. Sdos!
ResponderBorrar