Archive

Posts Tagged ‘Forms’

Restringir ingreso de texto o números en TextBox en Excel

November 7, 2012 7 comments

El presente artículo muestra un formulario en el que tenemos 2 TextBoxes: uno para ingresar sólo texto y otro para ingresar sólo números.

Cómo funciona

  • Sólo números: aquí utilizamos la función Chr(x), donde especificamos que si el caracter es menor  a 48 (0) y mayor a 57 (9) entonces éste deberá reemplazarse con “”, es decir, vacío.
  • Sólo texto: aquí utilizamos la función IsText para validar que todo lo que no sea texto se reemplace con “”, es de decir, vacío.

Código

Los siguientes códigos deberán ir en el Change de cada uno de los TextBoxes

'Validar que sólo se ingresen números (a-z y símbolos)
Private Sub txtNumero_Change()
    Dim Texto As Variant
    Dim Caracter As Variant
    Dim Largo As Integer
    On Error Resume Next
    Texto = Me.txtNumero.Value
    Largo = Len(Me.txtNumero.Value)
    For i = 1 To Largo
        Caracter = Mid(Texto, i, 1)
        If Caracter <> "" Then
            If Caracter < Chr(48) Or Caracter > Chr(57) Then
                Me.txtNumero.Value = Replace(Texto, Caracter, "")
            Else
            End If
        End If
    Next i
    On Error GoTo 0
    Caracter = 0
    Caracter1 = 0
End Sub
'
'Validar que sólo se ingrese texto (0-9)
Private Sub txtTexto_Change()
    Dim Texto As Variant
    Dim Caracter As Variant
    Dim Largo As String
    On Error Resume Next
    Texto = Me.txtTexto.Value
    Largo = Len(Me.txtTexto.Value)
    For i = 1 To Largo
        Caracter = CInt(Mid(Texto, i, 1))
        If Caracter <> "" Then
            If Not Application.WorksheetFunction.IsText(Caracter) Then
                Me.txtTexto.Value = Replace(Texto, Caracter, "")
            Else
            End If
        End If
    Next i
    On Error GoTo 0
End Sub

Animación del formulario en ejecución

Validar texto y números

:: Descargar el ejemplo

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 add in 2.3.6 Listar archivos de carpetas de PC en Excel

September 29, 2012 3 comments

Cómo están ??

Informando de la nueva versión de nuestro addin de este Blog, la versión 2.3.6.

Qué es lo nuevo?

Agrega un formulario que nos permite elegir una carpeta de nuestra PC para listar los archivos conternidos en una nueva hoja de Excel. De la misma manera nos permite filtrar por extesión, además de que podemos elegir si hace la búsqueda por subcarpetas.

Ubicación del menú

image

Formulario

image

Resultado

image

Código

La función que se utiliza fue tomada del sitio http://excelexperts.com/ y aunque tuve que modificarla para los propósitos específicos, la muestro tal cual está en el sitio

Sub ListFiles()
    iRow = 11
    Call ListMyFiles(Range("C7"), Range("C8"))
End Sub
'
Sub ListMyFiles(mySourcePath, IncludeSubfolders)
    Set MyObject = New Scripting.FileSystemObject
    Set mySource = MyObject.GetFolder(mySourcePath)
    On Error Resume Next
    For Each myFile In mySource.Files
        If Right(myFile.Name, 3) = "mp3" Then
            iCol = 2
            Cells(iRow, iCol).Value = myFile.path
            iCol = iCol + 1
            Cells(iRow, iCol).Value = myFile.Name
            iCol = iCol + 1
            Cells(iRow, iCol).Value = Right(myFile.Name, 3)
            iCol = iCol + 1
            Cells(iRow, iCol).Value = myFile.Size
            iCol = iCol + 1
            Cells(iRow, iCol).Value = myFile.DateLastModified
            iRow = iRow + 1
        Else
        End If
    Next
    If IncludeSubfolders Then
        For Each mySubFolder In mySource.SubFolders
            Call ListMyFiles(mySubFolder.path, True)
        Next
    End If
End Sub

:: Descargar EXCELeINFO add-in 2.3.6

Formulario para generar RFC en Excel

September 10, 2012 Leave a comment

Como dirían mis amigos Español, os traigo en esta ocasión un archivo de Excel con un formulario que permite ingrear el nombre y la fecha de  nacimiento para generar el RFC (Registro Federal de Contribuyentes) aplicable para México.

El código es atribuído al Ing. Salvador Garcia Velazquez, por lo que vale especificar que lo que yo sólo diseñé fue el formulario el cual usa la función GeneraRFC.

Nota: según comentarios recogidos de un foro, nos todos los RFC son correctos, por lo que recomiendo no confiar al 100% en los resultados o cualquiera es libre de corregir el código si encuentra alguna diferencia.

Formulario

image

:: Descarga el archivo

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