Archive

Posts Tagged ‘Formulario’

EXCELeINFO add-in: normalizar/unificar registros en bases de datos

November 4, 2012 2 comments

Cuando trabajamos con bases de datos, siempre nos topamos con registros que vienen escritos de manera diferente, pero que muchas veces se refieren a la misma cosa, tal es el caso de apellidos, departamentos. Dicha diferencia en captura provoca que nuestros filtros o tablas dinámicas no sean efectivas.

La herramienta

La herramienta que se incluye en esa versión del add-in intenta resolver el tema de las bases ‘sucias’, permitiendo filtrar todos los datos únicos e identificarlos para unificar los nombres y así normalizar/unificar nuestras bases para un mejor manejo en las distintas herramientas que nos ofrece Excel para manejo de bases de datos.

Cómo funciona

El primer paso que realiza la herramienta es un filtro avanzado sobre la columna elegida, para después llenar el ListBox del formulario y hacer el conteo de cada uno de los registros únicos. Al final podemos elegir los registros a unificar y asignarles la captura que deseemos.

Animación con la herramienta en ejecución

Normalizar bases de datos

:: Descargar EXCELeINFO add-in 2.3.9

Cambiar tamaño de formulario en ejecución en Excel

October 17, 2012 1 comment

Cuando nos dedicamos a crear formularios personalizados, siempre llega la necesidad de cambiar el tamaño de los mismos, así como cambiar la posición de los controles, pasando por ocultarlos o mostrarlos dependiendo la necesidad.

En esta ocasión, comparto un ejemplo donde incluyo código vba que dinámicamente cambia el tamaño de un Form, oculta un Frame y cambia de posición dos Buttons.

Conceptos

La propiedad para asignar tamaño a un formulario es Height, y los valores que manejaremos son 219 y 145 con opciones vistas y ocultas respectivamente.

La propiedad para cambiar de posición los botones de Aceptar y Cancelar es Top, y los valores que manejaremos son 168 y 90.

Vista de formulario inicial, sin las opciones visibles

image

Vista de formulario con tamaño aumentado y opciones visibles

image

Código del formulario

'::EXCELeINFO - cambiar tamaño de formulario en ejecución
'::Sergio Alejandro Campos MVP
'::14-oct-2012
'::https://exceleinfo.wordpress.com/
'
'Declaramos la variable vOpciones para que esté presente en todos
'las subrutina
Public vOpciones As Integer
'
Private Sub btnAceptar_Click()
MsgBox "El formulario queda de alto " & Me.Height, vbInformation, "ECELeINFO"
End Sub
'
Private Sub btnAumentar_Click()
'Si el valor de la variable es 0 ó 1 cambian las medidas de
'height y top
If vOpciones = 1 Then
vOpciones = 0
With Me
    .btnAumentar.Caption = "Reducir tamaño >>"
    .Height = 219
    .btnAceptar.Top = 168
    .btnCancelar.Top = 168
    .Frame1.Visible = True
End With
'
ElseIf vOpciones = 0 Then
vOpciones = 1
With Me
    .btnAumentar.Caption = "Aumentar tamaño >>"
    .Height = 140
    .btnAceptar.Top = 90
    .btnCancelar.Top = 90
    .Frame1.Visible = False
End With
End If
End Sub
'
Private Sub btnCancelar_Click()
Unload Me
End Sub
'
Private Sub UserForm_Activate()
'Asignamos valor iniciar a la variable y
'Definimos un tamaño inicial de los objetos
vOpciones = 1
With Me
    .btnAumentar.Caption = "Aumentar tamaño >>"
    .Height = 145
    .Frame1.Visible = False
    .btnAceptar.Top = 90
    .btnCancelar.Top = 90
End With
End Sub

:: Descargar ejemplo

Actualización: modificar tabla de Excel mediante ListBox con datos filtrados

September 30, 2012 17 comments

El 7-jul-12 había publicado un ejemplo que te permite pasar datos de una tabla de Excel a un objeto ListBox para después hacer modificaciones a los registros, así como poder eliminar los mismos.

En esta actualización añado un TextBox donde se podrá ingresar un texto para que los datos mostrados sean filtrados por ese texto.

Sugerencia: el ejemplo puede ser modificado para que tenga más prestaciones, lo cual podría convertirse es una aplicación en forma. Yo sólo dejo el ejemplo básico con el afán de que alguien lo pueda modificar a sus necesidades.

Formulario

image

Código del botón filtrar

Private Sub CommandButton5_Click()
On Error GoTo Errores
If Me.txtFiltro1.Value = "" Then Exit Sub
    Me.ListBox1.Clear
    j = 1
    For i = 1 To 18
        If Cells(i, j).Offset(0, 2).Value = CInt(Me.txtFiltro1.Value) Then
        Me.ListBox1.AddItem Cells(i, j)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, j).Offset(0, 1)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
Else
End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "EXCELeINFO"
End Sub

:: Descargar el ejemplo

EXCELeINFO 2.3.4 – formulario para crear índice con links (actualizado)

Presento la nueva versión del addin que en este mismo Blog podrás descargar de manera gratuita y sin complicaciones.

Esta ocasión se libera una actualización de la macro que ya incluía para insertar un índice de las hojas del libro, pero con links que nos llevan a las mismas. Se mejora la macro incluyendo un formulario donde se podrá especificar si queremos insertar el índice en una hoja nueva, como ya lo venía haciendo o podemos indicar en qué hoja y celda se creará,

Imagen del formulario

image

:: Descargar EXCELeINFO add-in 2.3.4

Modificar datos de una tabla con un ListBox en Excel

Este tema ya lo venía pensando a raíz de varias consultas en el Blog, y bueno, me di a la tarea de preparar un ejemplo sencillo, pero que puede servir de base para proyectos más ambiciosos.

El ejemplo tiene una tabla la cual se mostrará en un ListBox que está en un formulario. Para efecto de modificar los datos de cada registro, basta con elegir uno de ellos y presionar el botón Modificar y lanzará otro formulario donde se podrán actualizar los datos.

Al igual también cuenta con un botón de Eliminar para eliminar la fila donde está el registro,

Imagen del formulario

image

Código del formulario para mostrar datos

'Cerrar formulario
Private Sub CommandButton2_Click()
Unload Me
End Sub
'
'Abrir el formulario para modificar
Private Sub CommandButton3_Click()
If Me.ListBox1.ListIndex < 0 Then
    MsgBox "No se ha elegido ningún registro", vbExclamation, "EXCELeINFO"
Else
Modificar.Show
End If
End Sub
'
'Eliminar el registro
Private Sub CommandButton4_Click()
Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "EXCELeINFO")
If Pregunta <> vbNo Then
    Fila = Me.ListBox1.ListIndex + 2
    Rows(Fila).Delete
Application.ScreenUpdating = True
End If
End Sub
'
'Activar la celda del registro elegido
Private Sub ListBox1_Click()
Fila = Me.ListBox1.ListIndex + 2
For i = 1 To 4
    Cells(Fila, 1).Activate
Next i
End Sub
'Dar formato al ListBox y traer datos de la tabla
Private Sub UserForm_Initialize()
With ListBox1
    .ColumnCount = 4
    .ColumnWidths = "60 pt;60 pt;70 pt"
    .ColumnHeads = True
End With
ListBox1.RowSource = "Tabla1"
End Sub

Código del formulario para modificar

'Actualizar el registro
Private Sub CommandButton1_Click()
For i = 1 To 4
    ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
Next i
Unload Me
End Sub
'
'Cerrar formulario
Private Sub CommandButton2_Click()
Unload Me
End Sub
'
'Llenar los cuadro de texto con los datos del registro elegido
Private Sub UserForm_Initialize()
For i = 1 To 4
    Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
Next i
End Sub

:: Descargar el ejemplo

EXCELeINFO 2.3.3 – Reemplazar caracteres

Con motivo de una mejora y ante la imposibilidad de poder elegir los caracteres o grupos de caracteres que deseamos, se modifica el formulario de reemplazo de caracteres, permitiendo a usuario poder elegir los caracteres que mejor le acomoden a sus necesidades.

Imagen del formulario

image

:: Descargar EXCELeINFO add-in 2.3.3

EXCELeINFO 2.3.2 – Reemplazar caracteres especiales en Excel

May 27, 2012 2 comments

Se añade al addin una nueva funcionalidad llamada Reemplazar caracteres especiales, la cual reemplazará todos aquellos caracteres y signos diferentes a las letras (a-z) y los números (0-9). También el formulario da la opción a que se eliminen los acentos y los espacios excesivos.

Utilidad de Bases de datos

Cuando se manejan bases de datos en Excel, lo ideal es tenerlas totalmente depuradas, esto implica ‘higienizarlas’ de acentos, signos, espacios excesivos, para tener datos puros y no tener conflictos al integrarlas con otros sistemas.

Imagen del formulario

image

Notas sobre el código

La macro se basa en los 255 caracteres que tiene el código ASCII y reemplaza todos exceptuando las letras (a-z) y los números (0-9).

Función utilizada

Chr(número)

:: Descargar EXCELeINFO add-in 2.3.2