Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

ESTADISTICAS Actualizadas CORONAVIRUS – Web SCRAPING – VARIOS COMBOBOX en RIBBON de Excel #1011

combobox en ribbon de excel, como modificar cinta de opciones

Crear Varios Combobox en Ribbon de Excel

En este ejemplo se mostrará como se pueden insertar varios Combobox en la Ribbon o Cinta de Opciones de Excel, luego como se pueden cargar datos en ellos y como usarlos para trabajar con los datos contenidos en la hoja de Excel.

Aprende a manejar Excel, click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentirás.

  
 

Mira la macro en acción, una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con  vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.

Modificar la Ribbon o Cinta de Opciones Insertando Varios Combobox

Este ejemplo es bastante largo, por eso se recomienda ver el vídeo tutorial donde se puede ver en acción la macro para tener una idea en forma visual que se va haciendo la macro.

Este ejemplo muestra como insertar varios Combobox en la Barra Ribbon y usarlos para interactuar con los datos de la hoja de Excel, en este caso puntual se utilizan para seleccionar un país el cual se desea o requiere comparar con los datos de otro país.

Al descargar el libro e ingresar en el se puede observar un pestaña personalizada con varios iconos también personalizados, en dicha cinta de opciones de Excel se podrá observar que existen tres Combobox, los cuales se utilizan para seleccionar el país, obtener los datos de ese país que están contenidos en la base de datos de Access vinculada, que es donde se guardan los datos extraídos por scraping web.

Los datos del país seleccionado se mostrarán en la hoja denominada «Compara», se pueden hacer hasta tres comparaciones, para ello se debe proceder a seleccionar en el segundo y tercer Combobox el país que se requiera comparar.

Seleccionado el país se puede observar que la macro, buscó los datos en Access, los mostró en la hoja de Excel «Compara», insertó distintos tipos de gráficos, ubicando los gráficos y  en dando un tamaño estándar a los mismos.

Para modificar la Ribbon, se debe modificar la programación XML del archivo de Excel, lo cual se hacer usando el programa Custom Editor, se puede aprender sobre su uso y descargar en el link, igualmente descargando el presente archivo, va incluido en el archivo comprimido que se descarga, el programa editor de XML.

Explicación del código modificar la Cinta de Opciones o Ribbon

Se explica el código para un solo Combobox ya que el código para los dos restantes es igual salvo que cambia el nombre del Combobox y macros asociadas, (ver vídeo tutorial de este ejemplo).

En este caso se agregaron los tres Combobox en un grupo denominado «customGroup9», para ello se usa:

<group id=»customGroup9″ label=»COMPARAR»>

**** código de cada uno de los tres combobox

</group >

Ahora se agrega la codificación para cada uno de los tres Combobox, recordar que solo se explica uno solo, ver más abajo el código completo que modifica el XML y poder insertar los tres Combobox en la Cinta de Opciones.

En este caso se le otorga el id al Combobox, denominándolo «Combobox2», así:

<comboBox

*** códigos parámetros relacionados con el combobox 

</comboBox>

Lo primero es el «id» es único e identifica al control dentro de los controles de Excel, se usa el código:

id=»Combobox2″

Luego el label que se verá en la Ribbon, así:

label=»Pais: «

Luego el tamaño del Combobox siendo el otorgado el máximo tamaño, son 25 caracteres usados y se agrega así: «1234567890123456789012345» o también puede agregarse así: «XXXXXXXXXXXXXXXXXXXXXXXXX»; son 25 «X», como se haga es indistinto se obtiene el mismo resultado, el código es:

sizeString=»1234567890123456789012345″

Luego se agregó la ayuda que aparece al pasar el mouse sobre el control, así

screentip=»Seleccione País»

Luego una ayuda más detallada que aparece también cuando se pasa el mouse sobre el control, se usa este código:

supertip=»Permite seleccionar en el combobox y filtrar los datos de dicho país para comparar»

Ahora se agrega la macro que se ejecutará cuando sea seleccionado un ítem del combobox, así:

onChange=»Menu.SelecCompare1″

Ahora vienen tres elementos importantes que se necesitan para poder cargar los datos en el combobox, que son el getItemCount, getItemLabel y el getItemID, el código es el siguiente:

getItemCount=»Menu.NumUni»: con esto se cuenta la cantidad de elementos que se van a subir al combobox

getItemLabel=»Menu.TextUni»: esto nos da el nombre o lo que se ve en cada elemento del combobox, en este caso el nombre de los países.

getItemID=»Menu.IdUni»>: esto es el id de cada elemento del Combobox

El código de este combobox completo sería:

<group id=»customGroup9″ label=»COMPARAR»>
<comboBox id=»Combobox2″ label=»Pais: » sizeString=»1234567890123456789012345″ screentip=»Seleccione País»
supertip=»Permite seleccionar en el combobox y filtrar los datos de dicho país para comparar» onChange=»Menu.SelecCompare1″ getItemCount=»Menu.NumUni» getItemLabel=»Menu.TextUni» getItemID=»Menu.IdUni»> </comboBox>

Explicación del código modificar el Menu de Excel e Insertar Varios Combobox

Una vez modificado el XML del archivo de Excel y si abrimos el archivo y todo se realizó correctamente podremos ver en la barra personalizada los tres Combobox insertados, ahora a estos hay que otorgarles la funcionalidad para la cual fueron creados.

Se necesitan realizar o hacer cuatro códigos para que funcionen estos Combobox Insertados en la Ribbon, como se puede ver a esta altura, es un bastante más complicado que insertar un botón de comando, pero si se sigue este tutorial no presentará mayores dificultades:

Se deben establecer tres paramentos y la macro que se ejecutará al seleccionar un elemento del Combobox incrustado en la Cinta de Opciones:

getItemCount

getItemLabel

getItemID

onChange

La macro ejecutará estas tres macros getItemCount, getItemLabel y getItemID tantas veces como elementos haya a cargar, por ello la primera vez que se carguen los elementos que se realiza al momento de hacer click en la fecha para seleccionar un elemento notaremos, solamente la primera vez y dependiendo de la cantidad de elementos a cargar, de la velocidad de la PC con la cual trabajemos; que tardará unos segundos hasta que carguen los datos.

El primer elemento getItemCount que establece la cantidad de items o elementos que se subirán o aparecerán en el Combobox se realiza con el siguiente código:

Public Sub NumUni(Control As IRibbonControl, ByRef NumeroOpciones)
Application.ScreenUpdating = False
uf = Sheets(«Parametros»).Range(«G» & Rows.Count).End(xlUp).Row
NumeroOpciones = Application.WorksheetFunction.CountA(Sheets(«Parametros»).Range(«G2:G» & uf))
End Sub

En este caso el nombre de los países están listados en la hoja Parámetros en la columna G, es por ello que se determina el rango donde están los datos y luego se cuenta la cantidad de caracteres y se carga en la variable Numero de opciones cuya información es pasada al Combobox a través de ByRef, con estos códigos determinamos la cantidad de elementos que se subirán al Combobox.

Ahora es necesario pasarle al Combobox el nombre de cada uno de esos elementos, que en este caso será el nombre de los países, eso se hace con el siguiente código:

Public Sub TextUni(Control As IRibbonControl, NumeroOpcion As Integer, ByRef TextoOpcion)
Application.ScreenUpdating = False
TextoOpcion = Sheets(«Parametros»).Cells(NumeroOpcion + 2, «G»)
End Sub

Recuerdan que los nombres de los países estaban listados en el la hoja Paramentos columna G, dichos dato comienzan en la fila dos, por eso se establece: NumeroOpcion +2 

Por último se le debe pasar al Combobox el «Id» de cada elemento, la macro es la siguiente:

Public Sub IdUni(Control As IRibbonControl, NumeroOpcion As Integer, ByRef IdOpcion)
Application.ScreenUpdating = False
IdOpcion = Sheets(«Parametros»).Cells(NumeroOpcion + 2, «G»)
End Sub

Es preciso notar que en este ejemplo en los tres Comobox se cargan los nombres de los países como así también en el Combobox que se encuentra al lado en el mencionado menú de Excel, es por ello que al ser los mismos datos solamente se agregan tres getItemCount, getItemLabel y getItemID; sino se debería agregar una macro para cada combobox cuyos datos sean distintos, es otras palabras como son los mismos datos en los tres Combobox con que se determine getItemCount, getItemLabel y getItemID, una sola vez es suficiente, ahora si los datos fueran distintos se debería hacer una macro para cada Combobox con datos distintos.

En un post anterior, que sugiero ver para complementar esta publicación, también se explica como cargar un Combobox en la Cinta de Opciones, pero en esa oportunidad solamente se cargó un solo Combobox a diferencia de este ejemplo que agrega tres Combobox que se usan para comparar.

Se debe ahora programar la macro que responde al seleccionar un elemento del Combobox Insertado en la Cinta de opciones, se necesita una macro para cada Combobox,  cuyo nombre lo habíamos establecido en la codificación XML, el nombre otorgado en este ejemplo es: «SelecCompare1», el código es el siguiente:

Public Sub SelecCompare1(Control As IRibbonControl, TxtSeleccionado As String)
Application.ScreenUpdating = False
NomControl = Control.ID
Country = TxtSeleccionado
Sheets(«Compara»).Select
Call searchcountryCompare
End Sub

Hay que tener cuidado que esto se debe hacer para cada uno de los Combobox ya que los restantes Combobox tienen otra macros asociadas en este ejemplo se dio el nombre de macro asociada al Combobox dos «SelecCompare2» y al Combobox tres «SelecCompare3»; se debe hacer un código similar para los combobox 2 y 3, ver la codificación en el ejemplo.

Hasta aquí si se siguieron los pasos se debe poder ver los tres Combobox en la Ribbon de Excel, al hacer click en cualquiera de ellos se deben cargar el nombre de los países.

Al seleccionar un país se ejecuta la macro SelecCompare1, SelecCompare2 o SelecCompare3; dependiendo del Combobox del cual seleccionamos el ítem,  se carga el nombre del país en una variable publica denominada «Country» y con ello obtenemos el nombre del país seleccionado, requisito necesario para buscar los datos en la base de datos y mostrarlos en Excel.

Country = TxtSeleccionado

Explicación del código para Filtrar Datos en Excel dependiendo lo seleccionado en Combobox incrustado en Excel

Para obtener el resultado que se puede observar al ejecutar la macro, es decir el filtrado de datos en Excel, que son extraídos de Access, la inserción de gráficos, el alineado de los mismo, formatos a celdas, etc. son muchos códigos que no se explicarán uno por uno, porque sería in post interminable, se sugiere ver el vídeo tutorial asociado lo cual hará que se entienda con mayor facilidad la codificación.

Se procederá a explicar las principales acciones que realiza la macro, lo principal es extraer los datos desde Access filtrando solamente el país seleccionado en el Combobox Incrustado en Excel, eso se hace con estos códigos:

Primero se crea un objeto conexión con «cn», luego un objeto que contendrá todo los datos extraídos y estarán en memoria para ser usados; así:

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

Luego se crea la conexión, cuya dirección del directorio donde se encuentra el archivo de Access se guarda en la hoja Parámetros en la Celda C2, se usa el siguiente código:

mybookindice = Sheets(«Parametros»).Range(«C2»)
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0; » & «data source=» & mybookindice & «;»

Conectado Excel con la Base de datos de Access se puede crear la SQL para filtrar los datos y mostrarlos en Excel, con el siguiente código:

Sql = «SELECT * FROM DB_COVID_19 WHERE Pais = ‘» & Country & «‘»

Este código nos dice que se seleccione todos los campos de la base de datos DB_COVID19 cuando el campo (cabecera de la Columna) País sea igual a la variable «Country», recuerden que el valor de la variable «Country», se obtuvo al seleccionar el dato en el Combobox insertado en la Cinta de Opciones de Excel

Luego se ejecuta la SQL y si existen datos estos se guardan o copian en la hoja «Compara» a partir de la fila 62, el código es el siguiente:

Set rs = cn.Execute(Sql)
If rs.EOF = True Then
Set rs = Nothing
cn.Close
Set cn = Nothing
Else
e.Cells(62, col).CopyFromRecordset Data:=rs

Luego se da formato, se ordenan los datos y al final se agregan los gráficos, utilizando variables, para determinar el origen de los datos de cada gráfico, uno de los códigos usados es el siguiente, a esta altura es imprescindible ver el vídeo explicativo para poder entender de donde surgen estas variables, si se puede decir:

Que con el siguiente código se determina el origen de datos del gráfico:

e.Range(colpai & «62:» & colpai & ufe & «,» & colcas & «62:» & colcas & ufe & «,» & colact & «62:» & colact & ufe).Select

Acá se establece la celda que donde quiere que se ubique el gráfico:
Set ran = Range(«A» & ufgra + 1)

Con este código se inserta el gráfico dando medidas en un principio que luego serán ajustada:
Set myChart = e.ChartObjects.Add(100, 200, 350, 242)

Luego se cambia propiedades al gráfico, como el origen de los datos que surge de lo determinado y dicho unas lineas arriba, se establece el tipo de gráfico, el titulo se le da las medidas que debe tener y la ubicación:


With myChart
.Chart.SetSourceData Source:=Selection
.Chart.ChartType = xlLineMarkers
‘.Chart.SeriesCollection(1).XValues = Range(«A22:A36»)
.Chart.ApplyLayout (3)
.Chart.ChartTitle.Select
.Chart.ChartTitle.Text = «Total de Casos Coronavirus»
.Top = ran.Top + 1
.Left = 1 ‘ ran.Top
.Width = 350
.Height = 242
End With
End If

Código XML para modificar la Ribbon de Excel y Agregar Tres Combobox

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next

<group id=»customGroup9″ label=»COMPARAR»>
<comboBox id=»Combobox2″ label=»Pais: » sizeString=»1234567890123456789012345″ screentip=»Seleccione País»
supertip=»Permite seleccionar en el combobox y filtrar los datos de dicho país para comparar» onChange=»Menu.SelecCompare1″ getItemCount=»Menu.NumUni» getItemLabel=»Menu.TextUni» getItemID=»Menu.IdUni»> </comboBox>


<comboBox id=»Combobox3″ label=»Pais: » sizeString=»1234567890123456789012345″ screentip=»Seleccione País»
supertip=»Permite seleccionar en el combobox y filtrar los datos de dicho país para comparar» onChange=»Menu.SelecCompare2″ getItemCount=»Menu.NumUni» getItemLabel=»Menu.TextUni» getItemID=»Menu.IdUni»> </comboBox>

<comboBox id=»Combobox4″ label=»Pais: » sizeString=»1234567890123456789012345″ screentip=»Seleccione País»
supertip=»Permite seleccionar en el combobox y filtrar los datos de dicho país para comparar» onChange=»Menu.SelecCompare3″ getItemCount=»Menu.NumUni» getItemLabel=»Menu.TextUni» getItemID=»Menu.IdUni»> </comboBox>

</group >


Código VBA para interactuar con los Combobox en la Ribbon de Excel –  Cinta de Opciones – Menu de Excel

Public Sub NumUni(Control As IRibbonControl, ByRef NumeroOpciones)
Application.ScreenUpdating = False
uf = Sheets(«Parametros»).Range(«G» & Rows.Count).End(xlUp).Row
NumeroOpciones = Application.WorksheetFunction.CountA(Sheets(«Parametros»).Range(«G2:G» & uf))
End Sub
Public Sub TextUni(Control As IRibbonControl, NumeroOpcion As Integer, ByRef TextoOpcion)
Application.ScreenUpdating = False
TextoOpcion = Sheets(«Parametros»).Cells(NumeroOpcion + 2, «G»)
End Sub
Public Sub IdUni(Control As IRibbonControl, NumeroOpcion As Integer, ByRef IdOpcion)
Application.ScreenUpdating = False
IdOpcion = Sheets(«Parametros»).Cells(NumeroOpcion + 2, «G»)
End Sub

Public Sub SelecCompare1(Control As IRibbonControl, TxtSeleccionado As String)
Application.ScreenUpdating = False
NomControl = Control.ID
Country = TxtSeleccionado
Sheets(«Compara»).Select
Call searchcountryCompare
End Sub
Public Sub SelecCompare2(Control As IRibbonControl, TxtSeleccionado As String)
Application.ScreenUpdating = False
NomControl = Control.ID
Country = TxtSeleccionado
Sheets(«Compara»).Select
Call searchcountryCompare
End Sub
Public Sub SelecCompare3(Control As IRibbonControl, TxtSeleccionado As String)
Application.ScreenUpdating = False
NomControl = Control.ID
Country = TxtSeleccionado
Sheets(«Compara»).Select
Call searchcountryCompare
End Sub


Código VBA Modulo Compara, Usado Luego de Seleccionar el País, Busca Datos, Inserta Gráficos

Sub searchcountryCompare()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim cn As ADODB.Connection, rs As ADODB.Recordset
On Error Resume Next
Set e = Sheets(«Compara»)
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

uf = e.Range(«A» & Rows.Count).End(xlUp).Row
e.Range(«A3:AG21,A23:AG41,A43:A61»).Clear
With e.ChartObjects.Delete: End With ‘Borra todos los gráficos de la hoja


uf = e.Range(«A» & Rows.Count).End(xlUp).Row + 1

mybookindice = Sheets(«Parametros»).Range(«C2»)
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0; » & «data source=» & mybookindice & «;»

Select Case NomControl
Case Is = «Combobox2»
col = «A»
col2 = «K»
colpai = «C»
colcas = «D»
colmue = «F»
colrec = «H»
colact = «I»
colcri = «J»
ufgra = 2
Case Is = «Combobox3»
col = «L»
col2 = «V»
colpai = «N»
colcas = «O»
colmue = «Q»
colrec = «S»
colact = «T»
colcri = «U»
ufgra = 22
Case Is = «Combobox4»
col = «W»
col2 = «AG»
colpai = «Y»
colcas = «Z»
colmue = «AB»
colrec = «AD»
colact = «AE»
colcri = «AF»
ufgra = 42
End Select
e.ran

ufe = e.Range(«A» & Rows.Count).End(xlUp).Row + 1
If uf < 63 Then uf = 63
e.Range(col & «63:» & col2 & ufe).Clear

Sql = «SELECT * FROM DB_COVID_19 WHERE Pais = ‘» & Country & «‘»

Set rs = cn.Execute(Sql)
If rs.EOF = True Then
Set rs = Nothing
cn.Close
Set cn = Nothing
Else
e.Cells(62, col).CopyFromRecordset Data:=rs
Set rs = Nothing
cn.Close
Set cn = Nothing
End If

e.Range(«A62») = «Id»
e.Range(«B62») = «Fecha»
e.Range(«C62») = «País»
e.Range(«D62») = «Casos»
e.Range(«E62») = «Nuevos Casos»
e.Range(«F62») = «Muertes»
e.Range(«G62») = «Nuevas Muertes»
e.Range(«H62») = «Recuperados»
e.Range(«I62») = «Casos Activos»
e.Range(«J62») = «Casos Criticos»
e.Range(«K62») = «Casos/1M Pob»
e.Range(«A62:K62»).Copy Destination:=e.Range(«L62»)
e.Range(«A62:K62»).Copy Destination:=e.Range(«W62»)

With e.Range(«A62:AG62»)
.Interior.Color = 0 ‘negro
.Font.Color = 16777215 ‘blanco
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With

‘Ordena por casos en caso que se recuperen desordenados
‘rango de datos a ordenar
pf = 62
uf = e.Range(col & Rows.Count).End(xlUp).Row – 1
If e.Range(col & uf + 1) <> «Total:» Then uf = e.Range(col & Rows.Count).End(xlUp).Row
r1 = col & pf & «:» & col & uf
r2 = col & pf & «:» & col2 & uf

‘sorts the data
ActiveWorkbook.Worksheets(«Compara»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«Compara»).Sort.SortFields.Add Key:=Range(r1) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(«Compara»).Sort
.SetRange Range(r2)
.header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With


e.Range(«A» & ufgra & «:C» & ufgra).UnMerge
e.Range(«A» & ufgra) = «COUNTRY: » & UCase(e.Range(colcas & uf).Offset(0, -1)) & » Total Casos: » & Format(e.Range(colcas & uf), «##,##»)
e.Range («A» & ufgra & «:C» & ufgra)
With e.Range(«A» & ufgra & «:C» & ufgra)
.Font.Bold = True
.Interior.Color = 13082801 ‘Morado claro
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlDown
End With

e.Range(«D» & ufgra & «:F» & ufgra).UnMerge
e.Range(«D» & ufgra) = «Total Casos Activos: » & Format(e.Range(colact & uf), «##,##»)
With e.Range(«D» & ufgra & «:F» & ufgra)
.Font.Bold = True
.Interior.Color = 16777215 ‘blanco
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlDown
End With

e.Range(«G» & ufgra & «:I» & ufgra).UnMerge
e.Range(«G» & ufgra) = «Total Recuperados: » & Format(e.Range(colrec & uf), «##,##»)
With e.Range(«G» & ufgra & «:I» & ufgra)
.Font.Bold = True
.Interior.Color = 13082801 ‘Morado claro
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlDown
End With


e.Range(«J» & ufgra & «:L» & ufgra).UnMerge
e.Range(«J» & ufgra) = «Total Muertos: » & Format(e.Range(colmue & uf), «##,##»)
With e.Range(«J» & ufgra & «:L» & ufgra)
.Font.Bold = True
.Interior.Color = 16777215 ‘blanco
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlDown
End With


e.Range(«M» & ufgra & «:O» & ufgra).UnMerge
e.Range(«M» & ufgra) = «Total Casos Criticos: » & Format(e.Range(colcri & uf), «##,##»)
With e.Range(«M» & ufgra & «:O» & ufgra)
.Font.Bold = True
.Interior.Color = 13082801 ‘Morado claro
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlDown
End With

e.Range(«A1:Q1»).UnMerge
e.Range(«A1») = «COMPARACION ENTRE PAISES HISTORIAL CASOS DE CORONAVIRUS – COVID 19»
With e.Range(«A1»)
.Font.Size = 16
.Font.Color = 16777215 ‘blanco
.Interior.Color = 0
End With

With e.Range(«A1:Q1»)
.Merge
.Interior.Color = 0 ‘negro
.Font.Color = 16777215 ‘blanco
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With

ufe = e.Range(«A» & Rows.Count).End(xlUp).Row
e.Range(«A63:AG» & ufe).Interior.Color = xlNone
If ufe < 63 Then ufe = 63

For x = 64 To uf Step 2
e.Range(«A» & x & «:AG» & x).Interior.Color = 12611584 ‘12611584 celeste oscuro ‘5296274 verde claro ‘morado claro 13082801 ‘5296274 verde claro
Next x

e.Range(«A:A»).ColumnWidth = 17
e.Range(«B:B»).ColumnWidth = 10.71
e.Range(«C:C»).ColumnWidth = 12.14
e.Range(«D:D»).ColumnWidth = 12
e.Range(«E:E»).ColumnWidth = 14
e.Range(«F:F»).ColumnWidth = 11.86
e.Range(«G:G»).ColumnWidth = 12.43
e.Range(«H:H»).ColumnWidth = 12.57
e.Range(«I:I»).ColumnWidth = 12.43
e.Range(«J:J»).ColumnWidth = 11.43

For x = 1 To 3
Select Case x
Case Is = 1
colpai = «C»
colcas = «D»
colmue = «F»
colrec = «H»
colact = «I»
colcri = «J»
ufgra = 2
Case Is = 2
colpai = «N»
colcas = «O»
colmue = «Q»
colrec = «S»
colact = «T»
colcri = «U»
ufgra = 22
Case Is = 3
colpai = «Y»
colcas = «Z»
colmue = «AB»
colrec = «AD»
colact = «AE»
colcri = «AF»
ufgra = 42
End Select

ufe = e.Range(colcas & Rows.Count).End(xlUp).Row

If e.Range(«A63») <> Empty Then
e.Range(colpai & «62:» & colpai & ufe & «,» & colcas & «62:» & colcas & ufe & «,» & colact & «62:» & colact & ufe).Select
Set ran = Range(«A» & ufgra + 1)
Set myChart = e.ChartObjects.Add(100, 200, 350, 242)
With myChart
.Chart.SetSourceData Source:=Selection
.Chart.ChartType = xlLineMarkers
‘.Chart.SeriesCollection(1).XValues = Range(«A22:A36»)
.Chart.ApplyLayout (3)
.Chart.ChartTitle.Select
.Chart.ChartTitle.Text = «Total de Casos Coronavirus»
.Top = ran.Top + 1
.Left = 1 ‘ ran.Top
.Width = 350
.Height = 242
End With
End If


If e.Range(«L63») <> Empty Then
e.Range(colpai & «62:» & colpai & ufe & «,» & colmue & «62:» & colmue & ufe & «,» & colrec & «62:» & colrec & ufe & «,» & colcri & «62:» & colcri & ufe).Select
Set ran = Range(«E» & ufgra + 1)
Set myChart = e.ChartObjects.Add(100, 200, 350, 200)
With myChart
.Chart.SetSourceData Source:=Selection
.Chart.ChartType = xlLineMarkers
‘.Chart.SeriesCollection(1).XValues = Range(«A22:A36»)
.Chart.ApplyLayout (3)
.Chart.ChartTitle.Select
.Chart.ChartTitle.Text = «Recuperados, Criticos, Muertos»
.Top = ran.Top + 1
.Left = 351 ‘ ran.Top
.Width = 350
.Height = 242
End With
End If

If e.Range(«W63») <> Empty Then
e.Range(colpai & «62:» & colcas & «62,» & colpai & ufe & «:» & colcas & ufe).Select
Set ran = Range(«J» & ufgra + 1)
e.Shapes.AddChart2(494, xlRegionMap, 702, ran.Top + 1, 350, 242).Select
e.ChartObjects(«Gráfico 29742»).Activate
e.ChartTitle.Select
e.SetElement (msoElementChartTitleNone)
e.SetElement (201)
End If
Next x

e.Range(«B62:B» & ufe & «,D62:D» & ufe & «,O62:O» & ufe & «,Z62:Z» & ufe).Select
Set ran = Range(«Q3»)
Set myChart = e.ChartObjects.Add(100, 200, 350, 200)
With myChart
.Chart.SetSourceData Source:=Selection
.Chart.ChartType = xlLineMarkers
‘.Chart.SeriesCollection(1).XValues = Range(«A22:A36»)
.Chart.ApplyLayout (3)
.Chart.ChartTitle.Select
.Chart.ChartTitle.Text = «TOTAL DE CASOS POR PAÍS»
.Top = ran.Top + 1
.Left = ran.Left + 2
.Width = 750
.Height = 750
End With

Range(«A1»).Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Descarga el Libro Como Crear Validación de Datos en Automáticamente con Macros de Excel

Este y todos los archivos de Excel usados en esta saga de vídeos los podrá obtener gratis desde el final de cada post, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
Cuenta Paypal: https://paypal.me/programarexcel
Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

Summary
Author Rating
1star1star1star1star1star
Aggregate Rating
no rating based on 0 votes