Quantcast
Channel: EXCELeINFO
Viewing all 466 articles
Browse latest View live

Curso Excel VBA y Macros – Cap. 51 y 52 – Formularios – Control TextBox ó Cuadro de texto

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

El Control TextBox o Cuadro de texto es uno de los controles más usados en Formularios o UserForms en Excel VBA, ya que nos permite ingresar valores numéricos o de texto para posteriormente procesarlos en algún cálculo, pasarlos a otro control o a una hoja de un archivo de Excel.

Este tema consta de 2 videos donde veremos las siguiente propiedades relativas a este Control TextBox:

  • BackColor.
  • Multiline.
  • ScrollBar.
  • EnterKeyBehavior.
  • PasswordChar.
  • Usar la función BUSCARV o VLOOKUP.
  • Validar valores mientras se escribe.

Ver video Capítulo 51 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Ver video Capítulo 52 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Propiedad BackColor. Validar valores numéricos

Para este ejemplo usaremos la propiedad BackColor para asignarle el color rojo al fondo de un TextBox cuando el valor no sea numérico.

Figura 1. Propiedad BackColor de un TextBox en UserForm VBA.

Usaremos la siguiente macro.

Private Sub CommandButton1_Click()

If Not VBA.IsNumeric(Me.TextBox1.Value) Then
    Me.TextBox1.BackColor = VBA.vbRed
ElseIf VBA.IsNumeric(Me.TextBox1.Value) Then
    Me.TextBox1.BackColor = VBA.vbWhite
End If

End Sub

Propiedades Multiline, ScrollBar y EnterKeyBehavior. Varias líneas en un TextBox.

Normalmente un Cuadro de texto o TextBox contiene una sola línea para ingresar valores, pero con la propiedad MultiLine tendremos la oportunidad tener varias líneas para ingresar valores. Además, si deseamos tener una Barra de desplazamiento cuando las líneas pasen el alto del TextBox, usaremos la propiedad ScrollBar para tenerla. Y por último, para que podamos insertar saltos de línea con la tecla Enter, usaremos la propiedad EnterKeyBehavior.

Figura 2. Propiedades Multiline, ScrollBar y EnterKeyBehavior para un TextBox en un UserForm.

Private Sub UserForm_Initialize()

Me.TextBox2.MultiLine = True
Me.TextBox2.ScrollBars = fmScrollBarsBoth
Me.TextBox2.EnterKeyBehavior = True

End Sub

Propiedad PasswordChar. Cuadro de texto con formato contraseña

En más de una ocasión necesitaremos tener un Formulario de tipo Usuario y Contraseña. La propiedad PasswordChar nos permitirá formatear un Cuadro de texto con un tipo contraseña. Usando esta propiedad, vamos a poder elegir el carácter que será mostrado cada vez que ingresemos una letra o un número. En nuestro ejemplo usaremos el clásico Asterisco “*”.

Figura 3. Propiedad PasswordChar para un TextBox en un UserForm.

Private Sub UserForm_Initialize()

Me.TextBox3.PasswordChar = "*"

End Sub

Usar BUSCARV para devolver valores en un TextBox

El control Cuadro de texto tiene la ventaja que puede recibir valores de manera manual y de manera automática. En este ejemplo tendremos 2 TextBoxes. En uno ingresamos un valor, y usando la función BUSCARV o VLOOKUP devolveremos el valor encontrado en otro TextBox.

La función BUSCARV se mandará llamar usando el evento Exit del primer Cuadro de texto. El evento Exit lanzará una macro al momento de salir del control.

Figura 4. Uso de la función BUSCARV o VLOOKUP para usarse en un control TextBox.

Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim Valor As Integer
Dim Buscar As String

Valor = Me.TextBox4.Value

Buscar = Application.WorksheetFunction.VLookup(Valor, Sheets("Hoja1").Range("A1:D16"), 2, 0)

Me.TextBox5.Value = Buscar

End Sub

Validar valores mientras se escribe

En este ejemplo haremos uso del evento Change para validar valores al momento de ser ingresados en el TextBox. Haciendo uso del Ciclo For Next vamos a permitir solo valores numéricos en el Cuadro de texto, además de ingresar solo 10 dígitos, usando la propiedad MaxLength.

Figura 5. Evento Change y propiedad MaxLength para un TextBox en un UserForm.

Private Sub TextBox6_Change()

Dim Texto As Variant
Dim Largo As Integer
Dim i As Integer
Dim Caracter As Variant

Texto = Me.TextBox6.Value
Largo = VBA.Len(Texto)

For i = 1 To Largo
    Caracter = Mid(VBA.CStr(Texto), i, 1)
    
    If Caracter <> "" Then
        If Caracter < VBA.Chr(48) Or Caracter > VBA.Chr(57) Then
            Texto = VBA.Replace(Texto, Caracter, "")
            Me.TextBox6.Value = Texto
        Else
        End If
    End If
Next i

End Sub

Descarga el archivo de ejemplo

051 – 052 – Forrmularios Control TextBox Cuadro de texto – EXCELeINFO

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.


Curso Excel VBA y Macros – Cap. 53 y 54 – Formularios – Control ComboBox ó Cuadro combinado

$
0
0

Una de las acciones más socorridas en el temas de Formularios en Excel y VBA, es cómo rellenar un ComboBox y que éste se rellene automáticamente con nuevos elementos. El Control Cuadro combinado nos permitirá tener una lista de valores que se desplegará al dar clic en una flecha hacia abajo.

En este video tutorial veremos varias maneras en las que podremos rellenar un ComboBox dentro un Formulario o UserForm:

  • Propiedades DropButtonStyle, ShowDropButtonWhen, Style en un ComboBox o Cuadro combinado.
  • Añadir elementos uno a uno usando AddItem.
  • Añadir elementos en base a un nombre definido.
  • Rellenar ComboBox en base a los valores de una Tabla.
  • Rellenar ComboBox recorriendo los valores de una columna,
  • Rellenar ComboBox y mostrar varias columnas.

Ver video Capítulo 53 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Ver video Capítulo 54 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Añadir elementos uno por uno usando AddItem

En este ejemplo usaremos el Método AddItem para agregar elementos al CombBox uno a uno, o de manera manual. Rellenaremos el ComboBox usando el evento Initialize del UserForm. También haremos uso de algunas propiedades.

 

Figura 1. Rellenar ComboBox usando el método AddItem en UserForm.

Private Sub UserForm_Initialize()

With Me.ComboBox6

    .DropButtonStyle = fmDropButtonStyleArrow
    .ShowDropButtonWhen = fmShowDropButtonWhenAlways
    .Style = fmStyleDropDownCombo
    
    .AddItem "Microsoft"
    .AddItem "Excel"
    .AddItem "VBA"
    .AddItem "Macros"

End With
End Sub

Rellenar ComboBox en base a Nombre definido

Los nombres definidos se asignar a rangos de celdas para posteriormente usarlas como matrices en cálculos. En este ejemplo le asignaremos el nombre definido SUCURSALES a un rango, para luego usar los valores el rango para rellenar un ComboBox usando la propiedad RowSource. Date cuenta que usamos la propiedad ColumnHeads para mostrar encabezado de columna a la lista mostrada.

 

Figura 2. Rellenar ComboBox en base a nombre definido en un Formulario.

Private Sub CommandButton4_Click()

Me.ComboBox3.ColumnHeads = True
Me.ComboBox3.RowSource = "SUCURSALES"

End Sub

Rellenar valores en un ComboBox con nombre definido de tamaño variable

A diferencia del ejemplo anterior, en este ejemplo le definiremos un nombre al rango de manera automática, adecuando el tamaño de la lista a los valores que haya en el rango.

Private Sub CommandButton6_Click()

Dim Filas

Filas = Sheets("Hoja1").Range("F1").CurrentRegion.Rows.Count
ActiveWorkbook.Names.Add Name:="SUCURSALES", RefersTo:=Sheets("Hoja1").Range("F2:F" & Filas)
Me.ComboBox5.RowSource = "SUCURSALES"

End Sub

Rellenar ComboBox en base a una tabla

Una manera sencilla de rellenar el ComboBox es tomando valores de una Tabla. Solo deberemos saber el nombre de la tabla y el del campo del cual deseamos tomar los valores. La ventaja de usar Tablas, es que al ingresar valores nuevos, éstos se reflejarán automáticamente en el Cuadro combinado.

Private Sub CommandButton5_Click()

Me.ComboBox4.RowSource = "Tabla1[PRODUCTO]"

End Sub

Rellenar ComboBox recorriendo celdas de una columna

Este ejemplo, si bien no es el más óptimo, sobre todo si tenemos una columna con muchos valores. La ventaja de usar este método es que, al recorrer celda por celda podemos evaluar cada valor y decidir si se añade al ComboBox.

 

Figura 3. Rellenar ComboBox recorriendo los valores de una columna.

Private Sub CommandButton3_Click()

Dim Filas
Dim i

Filas = Sheets("Hoja1").Range("A1").CurrentRegion.Rows.Count

For i = 2 To Filas
    Me.ComboBox2.AddItem Sheets("Hoja1").Cells(i, 2).Value
Next i

End Sub

Mostrar varias columnas en ComboBox

Aunque no es muy común, de manera opcional podemos mostrar más de una columna en un ComboBox, usando las propiedades ColumnCount y ColumnWidths.

 

Figura 4. Mostrar varias columnas en ComboBox.

Private Sub CommandButton7_Click()

Dim i

With Me.ComboBox1

    .ColumnCount = 2
    .ColumnWidths = "50 pt;10pt"

    For i = 1 To 12
        .AddItem VBA.MonthName(i)
        .Column(1, i - 1) = i
    Next i

End With

End Sub

Descarga el archivo de ejemplo

053 – Forrmularios Control ComboBox Cuadro combinado – EXCELeINFO.zip

 

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Excel VBA y Macros – Cap. 55 – Formularios – PARTE 1 Control ListBox ó Cuadro de lista

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Siguiendo con el tema de Formularios, en este Video Tutorial veremos el Control ListBox o Cuadro de lista, el cual es uno de los controles más flexibles, ya que nos permite cargar valores de manera manual, como desde un rango de valores o una Tabla. Incluso, es unos de los Controles ActiveX que nos ayudará para un Proyecto de Alta, Baja y Modificación de registros.

Con respecto a este Control ListBox veremos los siguientes tema:

  • Rellenar Cuadro de lista en base a un Rango. ✔
  • Rellenar Cuadro de lista en base a una Tabla. ✔
  • Propiedades RowSource, ColumnCount, ColumnWidths y ColumnHeads. ✔
  • Identificar el elemento seleccionado en un ListBox (lista sencilla y selección múltiple).
  • Pasar valores de un ListBox a otro ListBox.
  • Filtrar valores de una tabla y mostrarlos en un ListBox.
  • Eliminar filas de una tabla con datos mostrados en un ListBox.

Ver video Capítulo 55 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Cargar datos en ListBox desde una Tabla

En este ejemplo tenemos una Tabla, la cual, como debemos saber, cambia automáticamente de tamaño al agregar valores. Los registros de la Tabla los cargaremos en un ListBox, además de usar las siguientes propiedades para darle formato al Control ActiveX.

  • ColumnCount. Hace referencia al números de columnas que deseamos mostrar en el ListBox.
  • ColumnWidths. Hace referencia al ancho de las columnas.
  • ColumnHeads. Cuando deseamos mostrar encabezados en el Cuadro de lista.
  • RowSource. Hace referencia a los datos de origen.

Figura 1. Cargar valores de una Tabla a un ListBox en un Formulario VBA.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Private Sub CommandButton1_Click()

Dim Columnas As Integer

Columnas = Range("Tabla1").Columns.Count

With Me.ListBox1

    .ColumnCount = Columnas
    .ColumnWidths = "20 pt;60 pt; 60 pt; 60 pt"
    .ColumnHeads = True
    .RowSource = "Tabla1"

End With

End Sub

Cargar datos en ListBox desde un Rango

Usando la misma propiedad RowSource, ahora cargaremos valores a un ListBox, pero ahora desde un Rango normal de celdas. Haremos uso del evento Initialize para cargar los valores al abrir el UserForm. Al rango que se cargará, le asignaremos un Nombre definido que se cambiará de tamaño automáticamente usando las propiedades Offset y Resize.

Figura 2. Cargar valores de un Rango a un ListBox desde un Formulario VBA.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Private Sub UserForm_Initialize()

Dim MiRango As Range
Dim MiRango2 As Range
Dim Columnas As Integer

Set MiRango = Sheets("Rango").Range("A1").CurrentRegion
Set MiRango2 = MiRango.Offset(1, 0).Resize(MiRango.Rows.Count - 1, MiRango.Columns.Count)

MiRango2.Name = "MiTabla"
Columnas = MiRango2.Columns.Count

With Me.ListBox1

    .ColumnCount = Columnas
    .ColumnWidths = "20 pt;60 pt; 60 pt; 60 pt"
    .ColumnHeads = True
    .RowSource = "MiTabla"

End With

End Sub

Descarga el archivo de ejemplo

055 – Forrmularios Control ListBox Cuadro de lista – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Excel VBA y Macros – Cap. 56 – Formularios – PARTE 2 Control ListBox ó Cuadro de lista

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Seguimos con todo con el curso de Macros desde cero y Formularios. En este tutorial seguiremos viendo el Control ListBox o Cuadro de lista. En esta ocasión veremos dos maneras de identificar los elementos seleccionados, tanto individuales como más de uno, usando la propiedad MultiSelect.

Con respecto a este Control ListBox veremos los siguientes tema:

Ver video Capítulo 56 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Detectar y mostrar el elemento elegido en un ListBox

En este ejemplo mostraremos en el Cuadro de lista los nombres de las hojas en el archivo activo. A dar clic sobre un elemento y luego mostrar el botón Mostrar nombre, se mostrará un MsgBox con el nombre del elemento elegido para luego activar la hoja que corresponde al nombre.

También lograremos mostrar el elemento elegido al dar doble click sobre él, usando el evento DblClick.

Figura 1. Mostrar elemento elegido en un ListBox dentro de un UserForm usando VBA.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

'Rellenar ListBox
Private Sub CommandButton1_Click()

Dim Hoja As Object

Me.ListBox1.Clear

For Each Hoja In ActiveWorkbook.Sheets

    Me.ListBox1.AddItem Hoja.Name

Next Hoja

End Sub

'Mostrar el elemento elegido
Private Sub CommandButton2_Click()

Call MostrarValorElegido

End Sub

'Mostrar el elemento elegido al dar doble clic
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Call MostrarValorElegido

End Sub

'Macro para mostrar el elemento elegido
Sub MostrarValorElegido()

Dim Cuenta As Integer
Dim Numero As Integer
Dim i As Integer
Dim j As Integer

Cuenta = Me.ListBox1.ListCount

For i = 0 To Cuenta - 1

    If Me.ListBox1.Selected(i) = True Then
        MsgBox Me.ListBox1.List(i), vbInformation, "EXCELeINFO"
        Sheets(Me.ListBox1.List(i)).Activate
    End If

Next i

End Sub

Mostrar múltiples elementos elegidos en un Cuadro de lista

Ahora te mostraré cómo trabajar con varios elementos elegidos en un ListBox. El iniciar el Formulario usando el evento Initialize haremos uso de las propiedades ListStyle y MultiSelect para indicarle al Control que deseamos que la lista sea de opción múltiple. Al elegir uno o varios elemento mostraremos el valor.

Figura 2. ListBox con selección múltiple en Formulario de Excel VBA.

Option Explicit

Private Sub CommandButton1_Click()
Dim Hoja As Object

Me.ListBox1.Clear

For Each Hoja In ActiveWorkbook.Sheets

    Me.ListBox1.AddItem Hoja.Name

Next Hoja
End Sub

Private Sub CommandButton2_Click()

Dim Cuenta As Integer
Dim Numero As Integer
Dim i As Integer
Dim j As Integer

Cuenta = Me.ListBox1.ListCount

For i = 0 To Cuenta - 1

    If Me.ListBox1.Selected(i) = True Then
        Numero = Numero + 1
    End If

Next i

If Numero <> 0 Then

For j = 0 To Cuenta - 1

    If Me.ListBox1.Selected(j) Then
        MsgBox Me.ListBox1.List(j)
    Else
    '
    End If

Next j

End If

End Sub

Private Sub UserForm_Initialize()

Me.ListBox1.ListStyle = fmListStyleOption
Me.ListBox1.MultiSelect = fmMultiSelectMulti

End Sub

Descargar el archivo de ejemplo

056 – Forrmularios Control ListBox Cuadro de lista 2 – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Juegos y animaciones en Excel – Space invaders, Donkey kong y más

$
0
0

Ya hemos visto en nuestro curso de macros desde cero en Excel que podemos desarrollar cosas interesantes para ser más productivos en nuestro trabajo.

En este video voy a permitir que mis amigos David García del canal Eco Excel y Jasso del canal Escritorio de Jasso nos muestren que también con Excel y VBA podemos
desarrollar todo tipo de animaciones y juegos.

La presentación la harán las hija de Jasso, Alissa y Síntique, quienes a su corta edad ya desarrollan juegos usando VBA y muchas matemáticas.

Ver video Juegos y animaciones en Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Los dejo con la presentación y los invito a visitar sus canales para ver todo lo genial que podemos crear en Excel.

Curso Excel VBA y Macros – Cap. 57 – Formularios – PARTE 3 Control ListBox ó Cuadro de lista

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

En esta parte de nuestro Curso de macros seguiremos con el tema de Control ActiveX ListBox. Ahora veremos una práctica muy interesante que nos permitirá retomar temas que ya hemos visto en temas anteriores de este curso. Veremos cómo pasar elementos de un ListBox a otro, y en ese pase de izquierda a derecha vamos a ocultar y mostrar hojas de un archivo de Excel.

Con respecto a este Control ListBox veremos los siguientes tema:

Ver video Capítulo 57 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Pasar elementos de un ListBox a otro mostrando y ocultando hojas

En este ejemplo tendremos un Formulario que contendrá dos ListBox o Cuadros de lista. El Control de la izquierda se rellenará con el dato de las hojas visibles y el Control de la derecha con el dato de la hojas ocultas.

Al iniciar el Formulario, se ejecutará el evento Initialize, el cual nos permitirá rellenar los Cuadros de lista con los nombres de las hojas visibles u ocultas. En este tutorial repasaremos los temas:

  • Ciclo For Next.
  • Sentencia IF.
  • Método RemoveItem para eliminar valores de un ListBox.
  • Propiedad Visible de las hojas.

Figura 1. Formulario para mostrar u ocultar hojas usando ListBox.

Código VBA del UserForm

Option Explicit

'Botón para Ocultar hojas
Private Sub CommandButton1_Click()
Dim Cuenta As Integer
Dim Numero As Integer
Dim i As Integer
Dim j As Integer
Dim NombreHoja As String

Cuenta = Me.lstVisibles.ListCount

For i = 0 To Cuenta - 1
    If Me.lstVisibles.Selected(i) = True Then
        Numero = Numero + 1
    End If
Next i

If Cuenta = 1 Then
    MsgBox "Debe haber por lo menos una hoja visible.", vbExclamation, "EXCELeINFO"
Else
    If Numero <> 0 Then
        For j = 0 To Cuenta - 1
            If Me.lstVisibles.Selected(j) = True Then
                NombreHoja = Me.lstVisibles.List(j)
                Me.lstVisibles.RemoveItem j
                Me.lstOcultas.AddItem NombreHoja
                ActiveWorkbook.Sheets(NombreHoja).Visible = False
            End If
        Next j
    End If
End If
End Sub

'Botón para Mostrar hojas
Private Sub CommandButton2_Click()
Dim Cuenta As Integer
Dim Numero As Integer
Dim i As Integer
Dim j As Integer
Dim NombreHoja As String

Cuenta = Me.lstOcultas.ListCount

For i = 0 To Cuenta - 1
    If Me.lstOcultas.Selected(i) = True Then
        Numero = Numero + 1
    End If
Next i

If Numero <> 0 Then
    For j = 0 To Cuenta - 1
        If Me.lstOcultas.Selected(j) = True Then
            NombreHoja = Me.lstOcultas.List(j)
            Me.lstOcultas.RemoveItem j
            Me.lstVisibles.AddItem NombreHoja
            ActiveWorkbook.Sheets(NombreHoja).Visible = True
        End If
    Next j
End If
End Sub

'Botón Cerrar
Private Sub CommandButton3_Click()
Unload Me
End Sub

'Al abrir el Formulario
Private Sub UserForm_Initialize()

Dim Hoja As Object

For Each Hoja In ActiveWorkbook.Sheets
    If Hoja.Visible = True Then
        Me.lstVisibles.AddItem Hoja.Name
    Else
        Me.lstOcultas.AddItem Hoja.Name
    End If
Next Hoja

End Sub

Descarga el archivo de ejemplo

057 – Forrmularios Control ListBox Cuadro de lista 3 – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Excel VBA y Macros – Cap. 58 – Formularios – PARTE 4 Control ListBox ó Cuadro de lista

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

En este artículo del Curso de macros desde cero, veremos un ejemplo que fácilmente puede ser aplicable a la vida real. Veremos cómo filtrar valores de un rango y mostrar esos valores en un ListBox. Con respecto a este Control ListBox veremos los siguientes tema:

Ver video Capítulo 58 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Filtrar valores de una tabla y mostrarlos en un ListBox

Una de las prácticas más comunes es mostrar valores filtrados de una Tabla o rango, en un ListBox. De hecho este ejercicio puede ser aplicable a proyectos de la vida real, ya que siempre vamos a necesitar filtrar valores, por ejemplo, mostrar todas las ventas de una sucursal.

Figura 1. UserForm para mostrar valores filtrados usando un ListBox.

Código VBA del Formulario

Option Explicit

'Botón Filtrar
Private Sub CommandButton1_Click()
Dim Hoja As Worksheet
Dim Filas As Integer
Dim i As Integer

Set Hoja = Sheets("Hoja1")
Filas = Hoja.Range("A1").CurrentRegion.Rows.Count

If Me.TextBox1.Value = "" Then Exit Sub

Me.ListBox1.Clear

For i = 1 To Filas
    If Hoja.Cells(i, 1).Offset(0, 1).Value = UCase(Me.TextBox1.Value) Then
        Me.ListBox1.AddItem Hoja.Cells(i, 1)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Hoja.Cells(i, 1).Offset(0, 1)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Hoja.Cells(i, 1).Offset(0, 2)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Hoja.Cells(i, 1).Offset(0, 3)
    Else
    'No hacer nada
    End If
Next i

End Sub

'Botón Cerrar
Private Sub CommandButton2_Click()
Unload Me
End Sub

'Al iniciar el Formulario
Private Sub UserForm_Initialize()

With Me
    .ListBox1.ColumnCount = 4
    .ListBox1.ColumnWidths = "20 pt;60 pt;60 pt;60 pt"
End With

End Sub

Descarga el archivo de ejemplo

058 – Forrmularios Control ListBox Cuadro de lista 4 – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Excel VBA y Macros – Cap. 59 – Formularios – PARTE 5 Control ListBox ó Cuadro de lista

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Seguimos con nuestro curso de Macros desde cero y en especial con el tema de Formularios. Seguimos con el tema del Control ListBox y en esta ocasión lograremos eliminar filas de un rango de celdas en base a valores filtrados en el ListBox.

Este es el último video de la serie del Control ActiveX ListBox. Ya hemos visto los siguientes temas:

Ver video Capítulo 58 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Filtrar rango y mostrar resultado en ListBox

En el tutorial anterior vimos cómo filtrar valores en un ListBox, lo cual lo logramos comparando el valor de un TextBox donde ingresamos el valor de VENDEDOR. Al dar clic en el botón Filtrar, se comparará el nombre del VENDEDOR contra la COLUMNA VENDEDOR de nuestro rango. Los valores que coincidan se agregarán fila por fila en el TextBox.

Figura 1. Filtrar rango de celdas y mostrar en ListBox dentro de un Formulario.

Eliminar filas de una Tabla en base a a valores filtrados en un ListBox

Una vez que tenemos los valores filtrados, elegimos un elemento de la lista y presionamos Eliminar. Al confirmar que sí queremos eliminar, se eliminará la fila correspondiente al elemento, coincidiendo el ID.

El botón eliminar funciona de la siguiente manera, al seleccionar un elemento de la lista, se ejecutará una macro que será lanzar por el evento Click del ListBox. El procedimiento realizará una búsqueda del ID en el rango de celdas, específicamente en la columna A. Al encontrar el ID, se guardará en una Variable Pública el dato de la fila donde se encontró el valor.

El botón eliminar tomará en cuenta la fila y al confirmar, se eliminará la fila.

Figura 2. Eliminar filas de un rango en base a valores filtrados en un ListBox.

Código VBA del Formulario

Option Explicit
Dim FilaEncontrada As Variant

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

'Al iniciar el Formulario
Private Sub UserForm_Initialize()

With Me
    .ListBox1.ColumnCount = 4
    .ListBox1.ColumnWidths = "20 pt;60 pt;60 pt;60 pt"
End With

End Sub

'Botón Filtrar
Private Sub CommandButton1_Click()
Dim Hoja As Worksheet
Dim Filas As Integer
Dim i As Integer

Set Hoja = Sheets("Hoja1")
Filas = Hoja.Range("A1").CurrentRegion.Rows.Count

If Me.TextBox1.Value = "" Then Exit Sub

Me.ListBox1.Clear

For i = 1 To Filas
    If Hoja.Cells(i, 1).Offset(0, 1).Value = UCase(Me.TextBox1.Value) Then
        Me.ListBox1.AddItem Hoja.Cells(i, 1)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Hoja.Cells(i, 1).Offset(0, 1)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Hoja.Cells(i, 1).Offset(0, 2)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Hoja.Cells(i, 1).Offset(0, 3)
    Else
    'No hacer nada
    End If
Next i

End Sub

'Al dar clic en el ListBox
Private Sub ListBox1_Click()
Dim Cuenta As Integer
Dim i As Integer
Dim Filas As Long
Dim Rango As Range
Dim ID As Integer

Cuenta = Me.ListBox1.ListCount

Filas = Sheets("Hoja1").Range("A1").CurrentRegion.Rows.Count
Set Rango = Sheets("Hoja1").Range("A2:A" & Filas)

For i = 0 To Cuenta - 1

    If Me.ListBox1.Selected(i) = True Then
        
        ID = Me.ListBox1.List(i)
        
        FilaEncontrada = Rango.Find(What:=ID, MatchCase:=False, LookAt:=xlWhole).Row
        MsgBox ID
        MsgBox FilaEncontrada
    
    End If

Next i
End Sub

'Botón Eliminar
Private Sub CommandButton3_Click()

Dim Cuenta As Integer
Dim Pregunta As Byte

Cuenta = Me.ListBox1.ListCount

If Cuenta = 0 Then Exit Sub

Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "EXCELeINFO")
If Pregunta = vbYes Then
    MsgBox "eliminar"
    'Sheets("Hoja1").Range(Cells(FilaEncontrada, 1), Cells(FilaEncontrada, 4)).Select
    Sheets("Hoja1").Range(Cells(FilaEncontrada, 1), Cells(FilaEncontrada, 4)).Delete Shift:=xlUp
    'ActiveCell.EntireRow.Delete
End If
    
    Call CommandButton1_Click

End Sub

'Botón Cerrar
Private Sub CommandButton2_Click()
Unload Me
End Sub

Descarga el archivo de ejemplo

059 – Forrmularios Control ListBox Cuadro de lista 5 – EXCELeINFO.xlsm

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.


Curso Excel VBA y Macros – Cap. 60 – Formularios – 3 maneras de mostrar imágenes

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

En este video y tutorial vamos a ver cómo usar el Control ActiveX Imagen para mostrar imágenes en Formularios. Veremos cómo insertar imágenes desde la ventana Propiedad y también insertar imágenes dinámicamente tomadas desde una carpeta. Veremos 3 métodos:

  • Insertar una imagen desde la ventana Propiedades y que la imagen quede en el archivo.
  • Insertar imagen desde una carpeta y dejar las imágenes fuera del archivo.
  • Mostrar imágenes dependiendo el valor de un ComboBox.
  • Propiedad BorderStyle y PictureSizeMode para definir borde y ajuste de la imagen.

Ver video Capítulo 60 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Insertar imágenes desde la ventana propiedades

Cuando estamos diseñando un Formulario y decidimos insertar imágenes, una opción viable es hacerlo desde el VBE o IDE de Visual Basic para Aplicaciones, usando la ventana de Propiedades. La ventaja de usar esta opción es que la imagen se quedará insertada en el Formulario y cuando traslademos el archivo a otra PC, el archivo se irá incrustado.

Estando en el VBE, insertamos un Formulario y dentro de él un control Image. Elegimos el Control ActiveX y nos vamos la parte izquierda, a la propiedad Picture. Damos clic en el botón de los 3 puntos y elegimos la imagen.

Figura 1. Insertar imágenes en UserForm usando la propiedad Picture.

Insertar imágenes desde una carpeta de manera dinámica

En el anterior ejemplo, dejábamos la imagen insertada en el Formulario. En este ejemplo haremos que, mediante un código VBA se insertará una imagen tomada directamente desde una carpeta de nuestra PC.

Haremos uso de la propiedad PictureSizeMode con el parámetro fmPictureSizeModeStretch para que las imágenes queden ajustadas al tamaño de la imagen.

Figura 2. Insertar imágenes en Formulario usando la propiedad Picture y LoadPicture.

Private Sub CommandButton1_Click()

With Me.Image2

    .BorderStyle = fmBorderStyleNone
    .PictureSizeMode = fmPictureSizeModeStretch
    .Picture = LoadPicture("C:\Users\Sergio Campos\Documents\Curso\Imágenes\image_thumb1.jpg")

End With

End Sub

Insertar imágenes en Formulario dependiendo el valor de un ComboBox

En este ejemplo insertaremos imágenes en un UserForm mientras va cambiando el valor de un Cuadro combinado. Usaremos el evento Initialize para cargar valores en el Combo, y luego el evento Change del ComboBox para asignar una imagen al Control Image cada vez que se seleccione un valor diferente.

Figura 3. Insertar imágenes en Formulario dependiendo el valor de un ComboBox.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Private Sub UserForm_Initialize()

With Me.ComboBox1

    .AddItem "cap1.jpg"
    .AddItem "cap2.jpg"
    .AddItem "cap3.jpg"
    .AddItem "cap4.jpg"
    .AddItem "cap5.jpg"

End With

End Sub

Private Sub ComboBox1_Change()

Dim Ruta As String
Dim RutaCompleta As String

Ruta = ThisWorkbook.Path
RutaCompleta = Ruta & "\imágenes\" & Me.ComboBox1.Value

With Me.Image3
    
    .PictureSizeMode = fmPictureSizeModeStretch
    '.PictureSizeMode = fmPictureSizeModeClip
    '.PictureSizeMode = fmPictureSizeModeZoom
    .BorderStyle = fmBorderStyleNone
    .Picture = LoadPicture(RutaCompleta)

End With

End Sub

Descargar archivo de ejemplo

060 – Forrmularios Control Imagen – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Fórmulas en Excel – Cap. 1 – Lo primero que debes saber – para quién es este curso

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Este es el primer capítulo de un nuevo Curso en EXCELeINFO. Curso de Fórmulas y funciones en Excel desde cero.

Para quién es este curso?

Este curso es para usuarios de nivel básico que quieran convertirse en expertos realizando análisis de información usando fórmulas en Excel, y para usuarios avanzados que quieran afianzar funciones de Excel que les permitan realizar cálculos y análisis óptimos en sus proyectos.

“El conocimiento nunca estorba”

Ver video Capítulo 1 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Temas generales que veremos en el video

  • Tipos de archivo.
  • Modelo de jerarquía (Excel, Archivo, Hoja, Celda).
  • Trabajar con archivos.
  • La interfaz de Excel.
  • Tipos de hojas.
  • Formatos de celda.
  • Opciones de protección.

Temas específicos que vemos en el video

  • Tipos de archivo.
  • Modelo de jerarquía (Excel, Archivo, Hoja, Celda).
  • Trabajar con archivos, abrir, cerrar, guardar, alt + f4.
  • La interfaz de Excel (backstage, ribbon, acceso rápido, nombres, fórmulas, área, etiquetas, nueva hoja, vista, zoom, desplazamiento, mini barra, atajos, diálogos).
  • Tipos de hojas (limites).
  • Formatos de celda.
  • Opciones de protección (archivo, estructura, celdas)

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Excel VBA y Macros – Cap. 61 – Formularios – CheckBox – 5 trucos que tal vez no conocías

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

En este video tutorial veremos el uso del Control CheckBox o Casilla de verificación. Este control es muy útil cuando deseamos tener varias opciones a elegir y deseamos guardar los valores para distintos objetivos. En este video veremos 5 trucos con el Control que tal vez no conocías:

  • Ejecutar una macro al momento de marcar un CheckBox.
  • Mostrar u ocultar controles cuando marcamos un CheckBox.
  • Habilitar opciones de Excel controlándolas con un CheckBox.
  • Ejecutar macros mediante el evento Doble clic del CheckBox.
  • Mostrar pantalla completa usando el CheckBox.

Ver video Capítulo 61 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Ejecutar macros al marcar el CheckBox

Usando el evento Click del Control Casilla de verificación podemos ejecutar código VBA. Los valores que guarda el control son TRUE o FALSE, es decir, VERDADERO o FALSO. La siguiente macro usa la instrucción IF THEN ELSE para validar si el Control está marcado para correr código VBA.

Figura 1. Control ActiveX CheckBox.

Private Sub CheckBox1_Click()

Dim Valor As String

If Me.CheckBox1.Value = True Then
    Valor = "Marcada."
Else
    Valor = "Desmarcada."
End If

MsgBox "Se ha presionado la casila. Ahora está " & Valor

End Sub

Mostrar controles al marcar una Casilla de verificación

En ocasiones, deseamos activar, mostrar u ocultar controles dependiendo si alguna Casilla de verificación está marcada. En la siguiente macro vemos cómo se activa un TextBox o Cuadro de texto al marcar el CheckBox.

Figura 2. Mostrar u ocultar controles al marcar un CheckBox.

Private Sub CheckBox2_Click()

If Me.CheckBox2 = True Then
    Me.TextBox1.Visible = True
    Me.TextBox1.SetFocus
Else
    Me.TextBox1.Visible = False
End If

End Sub

Controlar elementos visuales de Excel al activar o desactivar una Casilla de verificación.

En la siguiente macro usaremos el CheckBox para mostrar u ocultar Líneas de cuadrícula en Excel, similar como lo haríamos en la pestaña Vista > Mostrar > Líneas de cuadrícula.

Figura 3. Mostrar u ocultar Líneas de cuadrícula en Excel.

Private Sub CheckBox3_Click()

If Me.CheckBox3.Value = True Then
    ActiveWindow.DisplayGridlines = True
Else
    ActiveWindow.DisplayGridlines = False
End If

End Sub

Evento doble click del Control CheckBox

En esta macro controlaremos el comportamiento del evento DblClick de nuestro Control ActiveX. Al usar el evento, lograremos que al dar doble click en el Control, se marque o se desmarque el control.

Private Sub CheckBox4_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Cancel = True

End Sub

Mostrar pantalla completa

En la siguiente macro usaremos el Control CheckBox para activar o desactivar la Pantalla completa en Excel.

Private Sub CheckBox1_Click()

If Me.CheckBox1.Value = True Then
    Application.DisplayFullScreen = True
Else
    Application.DisplayFullScreen = False
End If

End Sub

Descarga el archivo de ejemplo

061 – Forrmularios Control CheckBox Cuadro de verificación – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Fórmulas en Excel – Cap. 2 – Elementos, ingresar y editar fórmulas en celdas

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Este es el segundo capítulo de un nuevo Curso en EXCELeINFO. Curso de Fórmulas y funciones en Excel desde cero.

En este capítulo veremos los siguientes temas:

  • Elementos de una fórmula.
  • Maneras de ingresar una fórmula.
  • Maneras de editar una fórmula.

Ver video Capítulo 2 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Elementos de una fórmula

  • Operadores. Símbolos para realizar operaciones.
  • Referencias a celdas. Aquí mandamos llamadas valores de una celda con nombre, de la misma hoja, del mismo archivo o de otros archivos.
    • =A2
  • Valores. Pueden ser valores numéricos o valores de texto.
    • =10
    • “diez”
  • Funciones de hoja de cálculo. Una función es una fórmula predefinida que sirve para devolver valores en base a argumentos.
    • Ejemplos: SUMA, POTENCIA, BUSCAR, etc.
  • Paréntesis. Este símbolo nos ayuda a controlar el orden en que se evalúan las expresiones en una fórmula.
    • =10+(5*2)

Maneras de insertar una fórmula

  • Signos =, @, + , –
  • Fórmula manual o apuntando a una celda.
  • Barra de fórmula y barra de estado.
  • En celda se mira el resultado y en barra de fórmulas la fórmula.
  • Referencias a celdas y colores
  • Editar fórmulas, cambiar la referencia a celdas.
  • Nombres.
  • Límites de fórmulas 8000 caracteres.
  • Ejemplos de fórmulas

Maneras de editar una fórmula

  • Tecla F2.
  • Doble clic en la fórmula.
  • Editando la barra de fórmulas.

Descarga el archivo de ejemplo

002 – Fórmulas en Excel – Elementos, ingresar y editar fórmulas – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

 

 

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Excel VBA y Macros – Cap. 62 – Formularios – OptionButton – Ejecutar dependiendo la opción elegida

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

En este video tutorial veremos el uso del Control ActiveX OptionButton o botón de opción, el cual tendrá el comportamiento de activarse y desactivarse. En caso de estar marcado o activado su propiedad será TRUE o VERDADERO, y en caso de estar desmarcado o desactivado, su propiedad será FALSE o FALSO. Veremos en este tutorial:

  • Determinar la opción elegida usando IF-THEN-ELSE.
  • Determinar la opción elegida usando SELECT CASE.
  • Crear grupos de botones.

Ver video Capítulo 62 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Determinar la opción elegida usando IF THEN ELSE

Como vimos, para determinar qué opción está elegida, debemos determinar cuál tiene el valor de TRUE, por lo que podemos usar la estructura de control IF-THEN-ELSE para validar cada una de las opciones y devolver el valor de la que esté elegida.

Figura 1. Determinar la opción elegida de un OptionButton.

Private Sub CommandButton1_Click()

Dim Opcion As String

If Me.OptionButton1.Value = True Then
    Opcion = Me.OptionButton1.Caption
ElseIf Me.OptionButton2.Value = True Then
    Opcion = Me.OptionButton2.Caption
ElseIf Me.OptionButton3.Value = True Then
    Opcion = Me.OptionButton3.Caption
Else
    Opcion = "Ninguno"
End If

MsgBox "El botón elegido fue '" & Opcion & "'.", vbInformation, "EXCELeINFO"

End Sub

Determinar la opción elegida usando SELECT CASE

Ahora mediante la instrucción SELECT-CASE podremos determinar la opción elegida. Al final, ustedes decidirán si usar IF o SELECT para validar la opción elegida.

Private Sub CommandButton2_Click()

Dim Opcion As String

Select Case True
    Case Me.OptionButton1.Value = True
        Opcion = Me.OptionButton1.Caption
    Case Me.OptionButton2.Value = True
        Opcion = Me.OptionButton2.Caption
    Case Me.OptionButton3.Value = True
        Opcion = Me.OptionButton3.Caption
    Case Else
        Opcion = "Ninguno"
End Select

MsgBox "La opción elegida fue '" & Opcion & "'.", vbInformation, "EXCELeINFO"

End Sub

Ejecutar macros dependiendo la opción elegida

En este ejemplo podremos ejecutar macros dependiendo la opción elegida. Esto nos puede ayudar a avanzar en un flujo de trabajo dependiendo el Botón marcado.

Figura 2. Ejecutar macros dependiendo la opción elegida en un OptionButton.

Private Sub CommandButton3_Click()

If Me.OptionButton4.Value = False And Me.OptionButton5.Value = False Then MsgBox "Elije una opción.": Exit Sub

If Me.OptionButton4.Value = True Then
    MsgBox "Se haría una acción."
Else
    MsgBox "Se haría otra acción."
End If

End Sub

Descarga el archivo de ejemplo

062 – Forrmularios Control OptionButton Botón de opción – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Fórmulas en Excel – Cap. 3 – Prioridad de operadores matemáticos y paréntesis

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Este es el tercer capítulo de un nuevo Curso en EXCELeINFO. Curso de Fórmulas y funciones en Excel desde cero.

En este capítulo veremos los siguientes temas:

  • Repaso de operadores.
  • Orden de cálculo.
  • Prioridad de operadores.

Ver video Capítulo 3 Excel Fórmulas y funciones

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Operadores. Símbolos para realizar operaciones

Figura 1. Uso de operadores en Excel.

Precedencia de operadores

  • Los operadores indican el tipo de cálculo que se desea hacer en una fórmula, como suma, resta, multiplicación o división.
  • Orden de cálculo. Siempre una fórmula en Excel comenzará con el signo de igual (=). Excel calcula las fórmulas de izquierda a derecha, según el orden de los operadores.
  • Prioridad de operadores. Aunque Excel calcule de izquierda a derecha, existen operadores que tienen prioridad, por lo que es importante conocerla para tener resultados esperados.

Prioridad de operadores

  • Por ejemplo, tomémonos un momento en resolver la siguiente fórmula:
  • =10/5+2*5-5

¿7 ó 15?

  • Cuando se tienen varios operadores de la misma prioridad, se evaluarán de izquierda a derecha, por ejemplo, suma y resta.
  • La siguiente lista contiene los operadores en orden de prioridad.

Figura 2. Prioridad y precedencia de operadores.

Uso de paréntesis

  • Si bien, las fórmulas se calcularán dependiendo el orden de prioridad de los operadores, si deseamos realizar primero algún cálculo en la fórmula, usamos paréntesis.
  • Un concento importante es el de paréntesis anidados.

Descargar el archivo de ejemplo

003 – Fórmulas en Excel – Precedencia de operadores matemáticos – EXCELeINFO

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Excel VBA y Macros – Cap. 63 – Formularios – Parte 1 Control ListView – Activar y cargar valores

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Con este video tutorial veremos una serie de videos dedicados al Control ListView, el cual es un Control muy flexible que viene a reemplazar de cierta manera al Control ListBox, ya que tiene más opciones a personalizar. Veremos en esta serie:

  • Configurar y activar el Control ActiveX ListView y hacer nuestra primera cara de valores.
  • Agregar registros.
  • Actualizar registros.
  • Baja de registrs.

Ver video Capítulo 63 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Activar Referencia al control ListView

El control ActiveX ListView es heredado desde Visual Basic 6. Si tu versión de Windows es de 32 bits ya contarás con el Control. Si tu versión de Windows es de 64 bits debes activar la Referencia a Microsoft Windows Common Controls (SP6), entrando al IDE de VBA y elegir el menú Herramientas > Referencias.

Una vez activada la Referencia, damos clic derecho en el Cuadro de herramientas y elegimos Controles adicionales. Marcamos la opción Microsoft ListView Control, versión 6.0.

No encuentro la referencia a Windows Common Controls (SP6)

En caso de que no encuentres la referencia correcta deberás descargar el control MSCOMCTL.OCX desde el sitio https://www.fmsinc.com/MicrosoftAccess/Controls/mscomctl/ y seguir los pasos de este tutorial.

Cargar valores al control ListView

Tenemos el siguiente rango de valores, los cuales deseamos volcar al Control ListView.

Figura 1. Rangos de celdas en Excel para cargar en ListView.

Insertamos un UserForm en el IDE de VBA e insertamos el Control ListView y una etiqueta Label1. Al mostrar el formulario, éste mostrará los valores de la Hoja1.

Figura 2. Cargar datos a un Control ListView.

Las ventajas del Control ListView, entre otras, tenemos:

  • Podemos mostrar líneas de división.
  • Cargar en encabezados.
  • Cambiar ancho de columnas.
  • Varias vistas para mostrar los valores.
  • Poner un CheckBox junto a cada elemento.
  • La facilidad de elegir varios elementos.

Código VBA del Formulario

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

'Al abrir el formulario
Private Sub UserForm_Initialize()

With Me.ListView1
    .Gridlines = True
    .HideColumnHeaders = False
    .View = lvwReport
    .FullRowSelect = True
    .Appearance = ccFlat
    .CheckBoxes = True
    .MultiSelect = True
End With

Call CargarValoresListView

End Sub

'Cargar valores en ListView
Sub CargarValoresListView()
Dim Rango As Range
Dim Celda As Range
Dim Item As ListItem
Dim Filas As Long
Dim Columnas As Long
Dim i As Long
Dim j As Long

Set Rango = Sheets("Hoja1").Range("A1").CurrentRegion
Filas = Rango.Rows.Count
Columnas = Rango.Columns.Count

With Me.ListView1
    .ColumnHeaders.Add Text:="ID", Width:=50
    .ColumnHeaders.Add Text:="VENDEDOR"
    .ColumnHeaders.Add Text:="SUCURSAL"
    .ColumnHeaders.Add Text:="PRODUCTO"
End With

For i = 2 To Filas
    Set Item = Me.ListView1.ListItems.Add(Text:=Rango(i, 1).Value)
    For j = 2 To Columnas
        Item.ListSubItems.Add Text:=Rango(i, j).Value
    Next j
Next i

Me.Label1.Caption = "Registros: " & Me.ListView1.ListItems.Count

End Sub

Descarga el archivo de ejemplo

063 – Forrmularios Control ListView PARTE 1 – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.


Curso Fórmulas en Excel – Cap. 4 – Referencias absolutas, relativas y mixtas

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Este es el tercer capítulo de un nuevo Curso en EXCELeINFO. Curso de Fórmulas y funciones en Excel desde cero.

En este capítulo veremos los siguientes temas:

  • Uso de paréntesis.
  • Referencias absolutas, relativas y mixtas.

Ver video Capítulo 4 Excel Fórmulas y funciones

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Uso de paréntesis

  • Si bien, las fórmulas se calcularán dependiendo el orden de prioridad de los operadores, si deseamos realizar primero algún cálculo en la fórmula, usamos paréntesis.
  • Un concento importante es el de paréntesis anidados.

Referencias absolutas, relativas y mixtas

  • Recordemos que las celdas en Excel se expresan en Columna y Fila, donde A1 indica que estamos en la intersección de la Columna A y la fila 1.
  • De manera predeterminada, las referencias en Excel son relativas, es decir, relativa a la posición de las celdas.
  • Si por ejemplo tenemos la fórmula =B1+C1 y copiamos la celda hacia abajo, ahora tendremos la fórmula =B2+C2, ya que de manera relativa aumentamos una fila.
  • Cuando decimos que una referencia es absoluta, significa que, o la columna o la fila quedarán fijas, sin cambio.
  • Usamos el signo de $ para indicar una referencia relativa.
  • Por ejemplo =$A$1, la referencia a la celda A1 es absoluta.
  • Para indicar referencias mixtas:
    • =$A1, la columna A es absoluta y la fila 1 es relativa.
    • =A$1, la columna A es relativa y la fila 1 es absoluta.

Descarga el archivo de ejemplo

004 – Fórmulas en Excel – Referencias absolutas, relativas y mixtas – EXCELeINFO.zip

 

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Excel VBA y Macros – Cap. 64 – Formularios – Parte 2 Control ListView – Agregar registros

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Con este video tutorial veremos una serie de videos dedicados al Control ListView, el cual es un Control muy flexible que viene a reemplazar de cierta manera al Control ListBox, ya que tiene más opciones a personalizar. Veremos en esta serie:

  • Configurar y activar el Control ActiveX ListView y hacer nuestra primera cara de valores.
  • Agregar registros.
  • Actualizar registros.
  • Baja de registros.

Ver video Capítulo 64 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Agregar botones de Nuevo y Guardar

En la parte 1 de este proyecto vimos como desarrollar un formulario donde insertamos el control ListView para cargar valores desde un rango de celdas de Excel. En esta parte del proyecto insertaremos nuevos controles al Formulario para poder agregar registros. Añadiremos los siguientes controles ActiveX:

  • 3 TextBox.
  • 1 Frame.
  • 2 Botones.

Figura 1. Formulario de alta de registros.

Añadir imágenes a botones

En el IDE de VBA elegimos los botones Nuevo y Guardar. En la ventana de Propiedades elegimos la propiedad Picture. Elegimos la imagen que deseemos insertar y luego en la propiedad PicturePosition elegimos fmPicturePositionLeftCenter.

Deshabilitar los Cuadros de texto

Al iniciar el formulario vamos a deshabilitar los TextBoxes, además de asignarles el color gris para que puedan ser modificados.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Private Sub UserForm_Initialize()

Me.ListView1.ColumnHeaders.Clear
Me.ListView1.ListItems.Clear

Me.TextBox1.Enabled = False
Me.TextBox1.BackColor = VBA.RGB(242, 242, 242)
Me.TextBox2.Enabled = False
Me.TextBox2.BackColor = VBA.RGB(242, 242, 242)
Me.TextBox3.Enabled = False
Me.TextBox3.BackColor = VBA.RGB(242, 242, 242)
Me.TextBox4.Enabled = False
Me.TextBox4.BackColor = VBA.RGB(242, 242, 242)

With Me.ListView1
    .Gridlines = True
    .HideColumnHeaders = False
    .View = lvwReport
    .FullRowSelect = True
    .Appearance = ccFlat
    .CheckBoxes = True
    .MultiSelect = True
End With

Call CargarValoresListView

End Sub

Sub CargarValoresListView()
Dim Rango As Range
Dim Celda As Range
Dim Item As ListItem
Dim Filas As Long
Dim Columnas As Long
Dim i As Long
Dim j As Long

Set Rango = Sheets("Hoja1").Range("A1").CurrentRegion
Filas = Rango.Rows.Count
Columnas = Rango.Columns.Count

With Me.ListView1
    .ColumnHeaders.Add Text:="ID", Width:=50
    .ColumnHeaders.Add Text:="VENDEDOR"
    .ColumnHeaders.Add Text:="SUCURSAL"
    .ColumnHeaders.Add Text:="PRODUCTO"
End With

For i = 2 To Filas
    Set Item = Me.ListView1.ListItems.Add(Text:=Rango(i, 1).Value)
    For j = 2 To Columnas
        Item.ListSubItems.Add Text:=Rango(i, j).Value
    Next j
Next i

Me.Label1.Caption = "Registros: " & Me.ListView1.ListItems.Count

End Sub

Botón Nuevo registro

Al momento de presionar el botón Nuevo habilitaremos los Cuadros de texto, además de reconocer el último ID registrado para asignar un nuevo ID.

Figura 2. Agregar registros a Formulario usando botón Nuevo.

'NUEVO
Private Sub CommandButton1_Click()
Dim Rango As Range
Dim NuevaFila As Long
Dim NuevoId As Long

Call HabilitarTextos

Me.TextBox2.SetFocus
Set Rango = Sheets("Hoja1").Range("A1").CurrentRegion
NuevaFila = Rango.Rows.Count
NuevoId = Sheets("Hoja1").Cells(NuevaFila, 1) + 1

Me.TextBox1.Value = NuevoId

End Sub

Sub HabilitarTextos()

Me.TextBox1.BackColor = VBA.vbWhite
Me.TextBox2.Enabled = True
Me.TextBox2.BackColor = VBA.vbWhite
Me.TextBox2.Value = ""
Me.TextBox3.Enabled = True
Me.TextBox3.BackColor = VBA.vbWhite
Me.TextBox3.Value = ""
Me.TextBox4.Enabled = True
Me.TextBox4.BackColor = VBA.vbWhite
Me.TextBox4.Value = ""

End Sub

Botón Guardar registro

Al dar clic en el botón Guardar se agregarán los valores ingresados en los TextBoxes en la siguiente línea vacía de nuestro rango y mandamos llamar al evento Initialize del Formulario para cargar de nuevo los valores del rango.

'GUARDAR
Private Sub CommandButton2_Click()
Dim Rango As Range
Dim NuevaFila As Long

Set Rango = Sheets("Hoja1").Range("A1").CurrentRegion
NuevaFila = Rango.Rows.Count + 1

With Sheets("Hoja1")
    .Cells(NuevaFila, 1).Value = Me.TextBox1.Value
    .Cells(NuevaFila, 2).Value = Me.TextBox2.Value
    .Cells(NuevaFila, 3).Value = Me.TextBox3.Value
    .Cells(NuevaFila, 4).Value = Me.TextBox4.Value
End With

Call UserForm_Initialize

End Sub

Descarga el archivo de ejemplo

064 – Forrmularios Control ListView PARTE 2 – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Power Query para Excel – Capítulo 14 – Unpivot columns – Anular dinamización de columnas

$
0
0

<<CURSO COMPLETO DE POWER QUERY EN YOUTUBE>>

En este capítulo veremos cómo convertir un rango de valores con columnas dinamizadas, es decir, con estructura de tipo Tabla dinámica, a un formato de Tabla que nos permita fácilmente analizar los datos.

Ver video Capítulo 14 Power Query para Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel BI y macros.

Tenemos un reporte de SUCURSALES, TIPO DE VENTA y MESES de enero a diciembre. El objetivo de anular dinamización de columnas es pasar los valores de columnas a filas.

 

Figura 1. Unpivot columns en Power Query.

Unpivot columns – Anular dinamización de columnas

Para convertir nuestro rango en una Tabla que fácilmente podamos analizar, primero lo convertiremos a Tabla para luego transformar los datos en Power Query. Seguimos los siguientes pasos:

  • Elegimos el rango completo.
  • Presionamos la combinación de teclas Control + T.
  • Le asignamos el nombre TablaMes a la Tabla.
  • Damos clic en la pestaña Datos > Obtener y transformar > Desde una tabla o rango.

 

Figura 1. Editor de Power Query en Excel.

Una vez que se abre la ventana del Editor de Power Query, seguimos los siguiente pasos:

  • Elegimos la columna SUCURSAL.
  • Damos clic derecho > Rellenar > Abajo.
  • Con la tecla Shift presionada elegimos las columnas SUCURSAL y TIPO.
  • Clic derecho > Anular dinamización de otras columnas.
  • A la columna Atributo le cambiamos el nombre a MES y a la columna Valor le asignamos el nombre de CANTIDAD.
  • Cerrar y cargar.

 

Figura 2. Anular dinamización de otras columnas en Power Query.

Ahora que ya tenemos nuestros valores en formato de Tabla de Excel, creamos una Tabla dinámica para replicar el formato inicial de nuestro valores. La ventana de que nuestro valores estén en Tabla es que tenemos más opciones para analizar nuestros datos.

 

Figura 3. Tabla dinámica en base a una Tabla de Excel.

Descarga el archivo de ejemplo

Aprendamos Power Query en Excel – 14 – Unpivot Anular dinamización de columnas.zip

 

<<CURSO COMPLETO DE POWER QUERY EN YOUTUBE>>

 

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Convertir reporte de columnas apiladas a Tabla en Power Query para Excel

$
0
0

<<CURSO COMPLETO DE POWER QUERY EN YOUTUBE>>

En este video tutorial veremos cómo hacer magia en Power Query, ya que convertiremos un reporte de columna apiladas a una Tabla de Excel, para posteriormente generar Tablas dinámicas para analizar nuestra información. Usaremos el método de transponer los datos, además de usar una columna de Índice y una de Módulo.

Ver video Transponer reporte de columnas apiladas

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel BI y macros.

Reporte de columnas apiladas

Tenemos el siguiente reporte donde en una sola columna contamos con la información de los movimientos de Ventas por Sucursal y Vendedor. El objetivo es transponer los datos y transformarlos a una Tabla de Excel. Hay que considerar que tenemos los campos ID, VENDEDOR, SUCURSAL y CANTIDAD.

Figura 1. Transponer reporte de columnas apiladas en Power Query para Excel.

Pasos para transformar reporte de columnas apiladas en Power Query

Una vez identificado nuestro reporte, sigamos los siguientes pasos para hacer la transformación del reporte.

  • Elegimos el rango A1:A20.
  • Presionamos la combinación de teclas Control + T para convertir el rango a Tabla.
  • Entramos a la pestaña Datos > Obtener y transformar datos > Desde una tabla o rango.

Figura 2. Power Query para Excel.

Ahora insertamos una columna de índice para tener las filas numeradas. En el editor de Power Query elegimos la pestaña Agregar columna > Columna de índice > Desde 0.

Figura 3. Insertar columna de índice en Power Query.

Ahora necesitamos identificar cada uno de los elementos de los movimientos. Considerando que tenemos los elementos ID, VENDEDOR, SUCURSAL y CANTIDAD, tenemos varios movimientos que cumples con esos campos. Por ejemplo, los campos ID de cada movimiento asignaremos 0, a los campos VENDEDOR le asignaremos el valor de 1, y así con los otros campos. Para lo anterior, insertamos una columna Módulo (en Excel es lo mismo que la función RESIDUO).

  • Elegimos la columna Índice.
  • Elegimos la pestaña Agregar columna > De número > Estándar > Módulo.
  • Elegimos el valor 5.
  • Aceptar.

Figura 4. Insertar columna Módulo en Power Query.

Ahora necesitamos convertir los valores de la columna Módulo que están en fila a columnas, para eso elegimos la columna Módulo y elegimos la pestaña Transformar > Columna dinámica.

Figura 5. Transformar columna dinámica en Power Query.

Luego elegimos las columnas 1, 2 y 3 y damos clic derecho > Rellenar Arriba.

Figura 6. Rellenar columnas hacia arriba en Power Query.

Ahora seguimos los últimos pasos para obtener el resultado final:

  • Filtramos la columna 0 y quitamos los valores null.
  • Elegimos las columnas 1, 2 y 3, damos clic derecho > Quitar otras columnas.
  • Cambiamos nombres a las columnas, 0 a ID, 1 a VENDEDOR, 2 a SUCURSAL y 3 a CANTIDAD.

Figura 7. Transponer reporte de columnas apiladas en Power Query.

Descargar archivo de ejemplo

Power Query en Excel – Convertir a Tabla reporte de columnas apiladas Transponer.zip

<<CURSO COMPLETO DE POWER QUERY EN YOUTUBE>>

 

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Curso Excel VBA y Macros – Cap. 65 – Formularios – Parte 3 Control ListView – Actualizar registros

$
0
0

<<CURSO COMPLETO EN YOUTUBE>>

Con este video tutorial veremos una serie de videos dedicados al Control ListView, el cual es un Control muy flexible que viene a reemplazar de cierta manera al Control ListBox, ya que tiene más opciones a personalizar. Veremos en esta serie de macros en Excel:

  • Configurar y activar el Control ActiveX ListView y hacer nuestra primera cara de valores.
  • Agregar registros.
  • Actualizar registros.
  • Baja de registros.

Ver video Capítulo 65 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Agregar botón Actualizar

Seguiremos usando el Formulario del video anterior y ahora insertaremos un botón llamado Actualizar, el cual se activará al momento de elegir un elemento en el ListView, además de pasar los valores del elemento elegido a los Cuadro de texto o TextBox de la parte superior.

Figura 1. UserForm con Control ListView en Excel VBA.

Evento Click del ListView y pasar valores a TextBoxes

Deseamos actualizar los valores de los elementos del ListView, y para eso necesitamos mostrar cada uno de los campos en los TextBoxes. Usaremos el evento Click para que al momento de elegir un elemento, se pasen los valores y podamos modificarlos.

Se añadió un nuevo botón llamado Actualizar que tendrá una macro que detectará el ID seleccionado y modificará los valores del rango en base a los TextBoxes.

Código VBA del evento Click del ListView y el botón Actualizar

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Private Sub ListView1_Click()
Call HabilitarTextos
Call PasarATextBox
Me.CommandButton3.Enabled = True

End Sub

Sub PasarATextBox()
With Me.ListView1
    Me.TextBox1.Value = .SelectedItem
    Me.TextBox2.Value = .SelectedItem.SubItems(1)
    Me.TextBox3.Value = .SelectedItem.SubItems(2)
    Me.TextBox4.Value = .SelectedItem.SubItems(3)
End With

Me.CommandButton2.Enabled = False

End Sub

'ACTUALIZAR
Private Sub CommandButton3_Click()
Dim Rango As Range
Dim FilaEncontrada As Long
Dim Valor As Long

Set Rango = ThisWorkbook.Sheets("Hoja1").Range("A1").CurrentRegion
Valor = Me.ListView1.SelectedItem

FilaEncontrada = Rango.Find(What:=Valor, LookAt:=xlWhole).Row

'MsgBox FilaEncontrada

With Rango
    .Cells(FilaEncontrada, 2).Value = Me.TextBox2.Value
    .Cells(FilaEncontrada, 3).Value = Me.TextBox3.Value
    .Cells(FilaEncontrada, 4).Value = Me.TextBox4.Value
End With

Call UserForm_Initialize

End Sub

Descarga el archivo de ejemplo

065 – Forrmularios Control ListView PARTE 3 – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Viewing all 466 articles
Browse latest View live