VBA Excel: problemas para utilizar tablas dinámicas usando userform

P/ Dante Amor  & Elsa Matilde 

Buenos días, estoy usando el siguiente UserForm en Excel 2003 para generar mi base de datos:

La macro que uso en el botón "Aceptar", para generar mi base de datos, es:

Private Sub boton_aceptar_Click() 'CÓDIGO PARA GENERAR LA BBDD
Sheets("BBDD").Rows("2:2").Insert shift:=x1down, copyorigin:=x1format_fromleftorabove
Sheets("BBDD").Rows("2:2").Interior.Pattern = x1None
Sheets("BBDD").Range("A2").Value = día
Sheets("BBDD").Range("B2").Value = mes
Sheets("BBDD").Range("C2").Value = año
Sheets("BBDD").Range("D2").Value = ComboBox1
Sheets("BBDD").Range("E2").Value = TextBox4
Sheets("BBDD").Range("F2").Value = ComboBox2
Sheets("BBDD").Range("G2").Value = TextBox5
Sheets("BBDD").Range("H2").Value = ComboBox3
Sheets("BBDD").Range("I2").Value = TextBox6
Sheets("BBDD").Range("J2").Value = TextBox1
Sheets("BBDD").Range("K2").Value = TextBox3
End Sub

El problema que tengo es el siguiente:

En el textbox1, ingreso valores numéricos (que por cierto, no sé qué código utilizar para que solamente acepte valores numéricos) los cuales después necesito calcular promedios, máximos, etc. Usando tablas dinámicas. Lo que está sucediendo es que la base de datos se origina correctamente, (los minutos aparecen en la base de datos) pero la tabla dinámica no me reconoce los minutos como números, ya que no puedo operar con ellos.

1 respuesta

Respuesta
1

Tanto los Textbox como los Label y otros más guardan sus datos como 'texto'.

Entonces para convertirlos a 'valores' debes utilizar algunas de las funciones de conversión. (Desde la Ayuda del Editor presioná F1 e ingresá este texto y tendrás la lista completa)

En tu caso además del textbox1 quizás debas convertir también las de fecha por si en algún otro proceso necesitas calcular fechas.

Private Sub boton_aceptar_Click() 'CÓDIGO PARA GENERAR LA BBDD
With Sheets("BBDD")
    .Rows("2:2").Insert shift:=x1down, copyorigin:=x1format_fromleftorabove
    .Rows("2:2").Interior.Pattern = x1None
    .Range("A2").Value = Val(día)
    .Range("B2").Value = Val(mes)
    .Range("C2").Value = Val(año)
    .Range("D2").Value = ComboBox1
    .Range("E2").Value = TextBox4
    .Range("F2").Value = ComboBox2
    .Range("G2").Value = TextBox5
    .Range("H2").Value = ComboBox3
    .Range("I2").Value = TextBox6
    .Range("J2").Value = Val(TextBox1)
    .Range("K2").Value = TextBox3
End With
End Sub

 Para que solo te tome valores numéricos podés utilizar esta ejemplo, ajustando el nombre de tu control:

Private Sub TextBox11_Change()
If Not IsNumeric(TextBox11.Text) And TextBox11.Text <> "" Then
    MsgBox "Solo puede ingresar numeros"
    TextBox11.Text = ""
    TextBox11.SetFocus
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas