Visual Basic - Número ingresado en hoja de excel mediante formulario, es reconocido como texto

Life is soft - evento anual de software empresarial
 
Vista:

Número ingresado en hoja de excel mediante formulario, es reconocido como texto

Publicado por Antonio Carripra (2 intervenciones) el 22/11/2016 19:08:56
Que tal...
Me estoy iniciando por necesidad en este mundo del vba, ya que he tenido que diseñar un formulario para inventariar multitud de recursos acumulados.
En este formulario realizado en excel, todo me funciona perfectamente salvo un aspecto. Me explicaré lo mejor posible:

He creado una serie de condiciones para que mi formulario no pueda aceptar que se le rellenen datos, a menos que pulse un botón al que he llamado NUEVO.
Posteriormente, he creado varios txtbox y cbobox, cuyo funcionamiento es perfecto. Mi problema, CREO, radica en la relación entre este botón NUEVO, que está asociado a un txtbox que he llamado ENTRADA.
Este txtbox ENTRADA, realiza una cuenta autonumérica que debe reflejarse, evidentemente, en la hoja de excel donde se registran los datos. En resumen: la hoja acepta la cuenta correctamente, 1, 2,.... pero no me reconoce estos números como tal, sino como texto.
Tras ingresar los datos, en la hoja me aparecen los registros de la primera fila, pero después, aunque se han grabado los siguientes, la fila 2, fila 3... etc... no aparecen en la hoja aunque confirmo que están registrados.
Siempre me aparece el error de que "numero con formato de texto o apóstrofe".

Esta es la serie que tengo dispuesta para el botón NUEVO:

1
2
3
4
5
6
7
Private Sub Cmdnuevo_Click()
uFila = Range("B" & Rows.Count).End(xlUp).Row + 1
If uFila = 12 Then
    Txtentrada = 1
Else
    Txtentrada = Range("B" & uFila - 1).Value + 1
End If

Agradecería una ayudita, por favor, pues llevo varios días intentando solucionar dicho problema. Reiterar que los datos que envío desde el formulario se graban correctamente en el hoja, pero no aparecen ya que los números son reconocidos como texto.
No se si el problema está en el diseño vba, o si tengo que indicarle algo más a la propia hoja de excel, ya que si hago una búsqueda y cambio el formato de la columna B, corrigiendo el error manualmente, se arregla el problema. Pero lo ideal sería no tener que hacerlo así.
Gracias de antemano, por la ayuda.

Adjunto también todas las rutinas del formulario, en caso de sea necesario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
Private Sub Cmdcerrar_Click()
End
End Sub
 
 
Private Sub Cmdnuevo_Click()
uFila = Range("B" & Rows.Count).End(xlUp).Row + 1
If uFila = 12 Then
    Txtentrada = 1
Else
    Txtentrada = Range("B" & uFila - 1).Value + 1
End If
'Limpiar controles de formulario
Me.Txtautor.Text = ""
Me.Txtcantidad.Text = ""
Me.Txtcontenido.Text = ""
Me.Txtdescripcion.Text = ""
Me.Txteditorial.Text = ""
Me.Txtmateria.Text = ""
Me.Txtprestado.Text = ""
Me.Cboformato.Value = ""
Me.Cbopropiedad.Value = ""
Me.Cborecurso.Value = ""
Me.Cboubicacion.Value = ""
Cmdregistrar.Enabled = True
 
End Sub
 
Private Sub Cmdregistrar_Click()
If Trim(Me.Txtdescripcion.Text) = "" Then
    MsgBox "Por favor, ingrese Descripción", vbExclamation, "Error"
    Txtdescripcion.SetFocus
    Exit Sub
End If
If Trim(Me.Cboformato.Value) = "" Then
    MsgBox "Por favor, ingrese Formato", vbExclamation, "Error"
    Cboformato.SetFocus
    Exit Sub
End If
If Trim(Me.Cborecurso.Value) = "" Then
    MsgBox "Por favor, ingrese Recurso", vbExclamation, "Error"
    Cborecurso.SetFocus
    Exit Sub
End If
If Trim(Me.Txtmateria.Text) = "" Then
    MsgBox "Por favor, ingrese Materia", vbExclamation, "Error"
    Txtmateria.SetFocus
    Exit Sub
End If
If Trim(Me.Txtcontenido.Text) = "" Then
    MsgBox "Por favor, ingrese Contenido", vbExclamation, "Error"
    Txtcontenido.SetFocus
    Exit Sub
End If
If Trim(Me.Txtautor.Text) = "" Then
    MsgBox "Por favor, ingrese Autor/a", vbExclamation, "Error"
    Txtautor.SetFocus
    Exit Sub
End If
If Trim(Me.Txteditorial.Text) = "" Then
    MsgBox "Por favor, ingrese Editorial", vbExclamation, "Error"
    Txteditorial.SetFocus
    Exit Sub
End If
If Trim(Me.Cboubicacion.Value) = "" Then
    MsgBox "Por favor, ingrese Ubicación", vbExclamation, "Error"
    Cboubicacion.SetFocus
    Exit Sub
End If
If Trim(Me.Txtcantidad.Text) = "" Then
    MsgBox "Por favor, ingrese Cantidad", vbExclamation, "Error"
    Txtcantidad.SetFocus
    Exit Sub
End If
If Not IsNumeric(Txtcantidad.Text) = True Then
    MsgBox "Por favor, ingrese un valor numérico", vbExclamation, "Error"
    Me.Txtcantidad.SetFocus
    Exit Sub
End If
If Trim(Me.Cbopropiedad.Value) = "" Then
    MsgBox "Por favor, ingrese Propietario", vbExclamation, "Error"
    Cbopropiedad.SetFocus
    Exit Sub
End If
If Trim(Me.Txtprestado.Text) = "" Then
    MsgBox "Por favor, ingrese destinatario de préstamo", vbExclamation, "Error"
    Txtprestado.SetFocus
    Exit Sub
End If
 
 
uLinea = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & uLinea).Value = Txtentrada
Range("C" & uLinea).Value = Me.Txtdescripcion.Text
Range("D" & uLinea).Value = Me.Cboformato.Value
Range("E" & uLinea).Value = Me.Cborecurso.Value
Range("F" & uLinea).Value = Me.Txtmateria.Text
Range("G" & uLinea).Value = Me.Txtcontenido.Text
Range("H" & uLinea).Value = Me.Txtautor.Text
Range("I" & uLinea).Value = Me.Txteditorial.Text
Range("J" & uLinea).Value = Me.Cboubicacion.Value
Range("K" & uLinea).Value = Me.Txtcantidad.Text
Range("L" & uLinea).Value = Me.Cbopropiedad.Value
Range("M" & uLinea).Value = Me.Txtprestado.Text
MsgBox "Registro finalizado con éxito. Pulse NUEVO para continuar.               Si ha finalizado, pulse CERRAR", vbInformation, "Ingresar"
Cmdregistrar.Enabled = False
 
End Sub
 
 
Private Sub UserForm_Initialize()
Me.Cboformato.AddItem ""
Me.Cboformato.AddItem "Digital"
Me.Cboformato.AddItem "Físico"
Me.Cborecurso.AddItem ""
Me.Cborecurso.AddItem "Audio"
Me.Cborecurso.AddItem "Biblioteca - Cuentos"
Me.Cborecurso.AddItem "Biblioteca - eBook"
Me.Cborecurso.AddItem "Biblioteca - General"
Me.Cborecurso.AddItem "Cartelería"
Me.Cborecurso.AddItem "Cuadernillo"
Me.Cborecurso.AddItem "Fichas"
Me.Cborecurso.AddItem "Guía"
Me.Cborecurso.AddItem "Iconos"
Me.Cborecurso.AddItem "Imágenes"
Me.Cborecurso.AddItem "Juego de mesa y similar"
Me.Cborecurso.AddItem "Libro de texto"
Me.Cborecurso.AddItem "Manual Didáctico"
Me.Cborecurso.AddItem "Método"
Me.Cborecurso.AddItem "Presentaciones"
Me.Cborecurso.AddItem "Software"
Me.Cborecurso.AddItem "Tutorial"
Me.Cborecurso.AddItem "Videos"
Me.Cbopropiedad.AddItem ""
Me.Cbopropiedad.AddItem "Ajeno (Rellenar prestado a PT por..)"
Me.Cbopropiedad.AddItem "Centro Educativo"
Me.Cbopropiedad.AddItem "Personal"
Me.Cboubicacion.AddItem ""
Me.Cboubicacion.AddItem "Aula PT - Adaptación curricular. ESO"
Me.Cboubicacion.AddItem "Aula PT - Armario Software"
Me.Cboubicacion.AddItem "Aula PT - Armario Carpeta AZ"
Me.Cboubicacion.AddItem "Aula PT - Cuadernillos EP"
Me.Cboubicacion.AddItem "Aula PT - Diccionario - Ortografía - Lectoescritura - Comprensión"
Me.Cboubicacion.AddItem "Aula PT - Lectura y Biblioteca"
Me.Cboubicacion.AddItem "Aula PT - Mapas"
Me.Cboubicacion.AddItem "Aula PT - Material ATAL. EP - ESO"
Me.Cboubicacion.AddItem "Aula PT - Material curricular - Cuadernillos. ESO"
Me.Cboubicacion.AddItem "Aula PT - Material curricular. EP"
Me.Cboubicacion.AddItem "Aula PT - Material específico PT - AL"
Me.Cboubicacion.AddItem "HD Recursos - Banco de imágenes. Láminas"
Me.Cboubicacion.AddItem "HD Recursos - Banco de imágenes. Pictogramas"
Me.Cboubicacion.AddItem "HD Recursos - Banco de imágenes. Sec. Temporal"
Me.Cboubicacion.AddItem "HD Recursos - Banco de imágenes. Temáticas"
Me.Cboubicacion.AddItem "HD Recursos - Banco de sonidos. Audiocuento"
Me.Cboubicacion.AddItem "HD Recursos - Banco de sonidos. Memoria auditiva"
Me.Cboubicacion.AddItem "HD Recursos - Banco de sonidos. Temáticas"
Me.Cboubicacion.AddItem "HD Recursos - Biblioteca"
Me.Cboubicacion.AddItem "HD Recursos - Dibujos y coloreo"
Me.Cboubicacion.AddItem "HD Recursos - Fichas y cuadernillos. EE y EI"
Me.Cboubicacion.AddItem "HD Recursos - Fichas y cuadernillos. ESO"
Me.Cboubicacion.AddItem "HD Recursos - Fichas y cuadernillos. Primaria"
Me.Cboubicacion.AddItem "HD Recursos - Fichas y cuadernillos. Repaso verano"
Me.Cboubicacion.AddItem "HD Recursos - Libros de texto. ESO"
Me.Cboubicacion.AddItem "HD Recursos - Libros de texto. ESPA"
Me.Cboubicacion.AddItem "HD Recursos - Libros de texto. Infantil"
Me.Cboubicacion.AddItem "HD Recursos - Libros de texto. Primaria"
Me.Cboubicacion.AddItem "HD Recursos - Manuales didácticos"
Me.Cboubicacion.AddItem "HD Recursos - Presentación y Diapositivas"
Me.Cboubicacion.AddItem "HD Recursos - Relajación"
Me.Cboubicacion.AddItem "HD Recursos - Software"
Me.Cboubicacion.AddItem "HD Recursos - Videos.Didácticos"
Me.Cboubicacion.AddItem "HD Recursos - Videos. Ocio y diversión"
Cmdregistrar.Enabled = False
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 4.024
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Número ingresado en hoja de excel mediante formulario, es reconocido como texto

Publicado por Andres Leonardo (1672 intervenciones) el 22/11/2016 21:36:43
podrias subir tu libro con toda la confidencialidad del caso podria intentar ayudarte

**me parece que cuando asignes el valor a la celda esla novedad ya que envias un string a una celda y obviamente lo manjea como string y no como numero .... ... enviale un ABS (text1.text) y primero formatea como numero la celda

Saludos
Andres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Número ingresado en hoja de excel mediante formulario, es reconocido como texto

Publicado por Antonio (1 intervención) el 23/11/2016 08:10:14
Muchas gracias por la informacion, pero no termino de comprender qué es lo que debería hacer......, llevo muy poco tiempo con el vba y hay instrucciones que no termino de comprender.... necesitaría saber qué es lo que habría que cambiar y "expresamente" la instrucción concreta en el lugar concreto.... perdón si no me expreso en términos "técnicos"...
Adjunto el libro completo. Y gracias de nuevo por la ayuda, pues estoy bloqueado para seguir trabajando mientras se soluciona este error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 4.024
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Número ingresado en hoja de excel mediante formulario, es reconocido como texto

Publicado por Andres Leonardo (1672 intervenciones) el 23/11/2016 15:37:12
Es por lo que pense te esta tomando el valor mal

haz esto ... en tu codigo cambia


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Cmdnuevo_Click()
uFila = Range("B" & Rows.Count).End(xlUp).Row + 1
If uFila = 12 Then
    Txtentrada.Text = 1   ' aqui mandas en tu codigo a txtentrada pero no a txtentrada.TEXT que es el valor correcto.
Else
    Txtentrada = Range("B" & uFila - 1).Value + 1
End If
'Limpiar controles de formulario
Me.Txtautor.Text = ""
Me.Txtcantidad.Text = ""
Me.Txtcontenido.Text = ""
Me.Txtdescripcion.Text = ""
Me.Txteditorial.Text = ""
Me.Txtmateria.Text = ""
Me.Txtprestado.Text = ""
Me.Cboformato.Value = ""
Me.Cbopropiedad.Value = ""
Me.Cborecurso.Value = ""
Me.Cboubicacion.Value = ""
Cmdregistrar.Enabled = True
 
End Sub


aqui lo mismo

1
2
'al grabar ya que pasaste las validaciones debes darle a la celda B el Valor texto ... 
Range("B" & uLinea).Value = Txtentrada.Text

lo que pasa es que pesa mucho para subirtelo ... pero ahi te paso ... saludos
Andres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Número ingresado en hoja de excel mediante formulario, es reconocido como texto

Publicado por Antonio Carripra (2 intervenciones) el 23/11/2016 15:52:50
Muchísimas gracias..... lo cierto es que era una tontería y no me había fijado.....
Muy agradecido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 4.024
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Número ingresado en hoja de excel mediante formulario, es reconocido como texto

Publicado por Andres Leonardo (1672 intervenciones) el 23/11/2016 17:12:15
Hola!!!

Que bueno que te haya servido ..
si estas satisfecho con la respuesta no olvides de dar el +1 a fin de que la reputación de las repuestas mejore

SAludos desde Ecuador

Andres Guerrero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar