Error 13 en tiempo de ejecución

Tengo un formulario con varios botones que abren otros formularios. Todos funcionan excepto el de salidas.
'salidas
Private Sub CommandButton2_Click()
UserForm3.Show 'aquí da el error
End Sub
El código del userForm3 comprueba unos datos a partir de un combobox con un código de referencia i lo escribe en una hoja, ademas hace un descuento del total del stock e imprime un albarán... Ahí va el código, un poco largo
'Aqui lleno el  textBox automaticos
Private Sub ComboBox1_Click()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim m As Integer
Dim y As Integer
Dim z As Integer
Dim final As Integer
Dim final2 As Integer
Dim final3 As Integer
Dim FINAL4 As Integer
Dim FINAL5 As Integer
Dim FINAL6 As Integer
For i = 2 To 10000
If Hoja5.Cells(i, 1) = "" Then
final = i – 1
Exit For
End If
Next
For j = 2 To 10000
If Hoja5.Cells(i, 1) = "" Then
final3 = i – 1
Exit For
End If
Next
For k = 2 To 10000
If Hoja6.Cells(k, 1) = "" Then
final2 = k – 1
Exit For
End If
Next
For m = 2 To 10000
If Hoja5.Cells(i, 1) = "" Then
FINAL4 = i – 1
Exit For
End If
Next
For y = 2 To 10000
If Hoja5.Cells(i, 1) = "" Then
FINAL5 = i – 1
Exit For
End If
Next
For z = 2 To 10000
If Hoja5.Cells(i, 1) = "" Then
FINAL6 = i – 1
Exit For
End If
Next
For i = 2 To final
If ComboBox1 = Hoja5.Cells(i, 1)
ThenTextBox1 = Hoja5.Cells(i, 2) 'nombre
TextBox6 = Date
Exit For
End If
Next
For i = 2 To final
If Val(ComboBox1) = Hoja5.Cells(i, 1) Then
TextBox1 = Hoja5.Cells(i, 2) 'nombre
TextBox6 = Date
Exit For
End If
Next
For j = 2 To final3
If ComboBox1 = Hoja5.Cells(j, 1) Then
TextBox10 = Hoja5.Cells(j, 1) 'Codigo Proveedor
Exit For
End If
Next
For j = 2 To final3
If Val(ComboBox1) = Hoja5.Cells(j, 1)
ThenTextBox10 = Hoja5.Cells(j, 1) 'Codigo Proveedor
Exit For
End If
Next
For k = 2 To final2
If ComboBox1 = Hoja6.Cells(k, 1) Then
TextBox2 = Hoja6.Cells(k, 3) 'Stock Actual
Exit For
End If
Next
For k = 2 To final2
If Val(ComboBox1) = Hoja6.Cells(k, 1) Then
TextBox2 = Hoja6.Cells(k, 3) 'Stock Actual
Exit For
End If
Next
For m = 2 To FINAL4
If ComboBox1 = Hoja5.Cells(m, 1) Then
TextBox4 = Hoja5.Cells(m, 7) 'Familia
Exit For
End If
Next
For m = 2 To FINAL4
If Val(ComboBox1) = Hoja5.Cells(m, 1) Then
TextBox4 = Hoja5.Cells(m, 7) 'Familia
Exit For
End If
Next
For y = 2 To FINAL5
If ComboBox1 = Hoja5.Cells(y, 1) Then
TextBox11 = Hoja5.Cells(y, 5) 'PvP
Exit For
End If
Next
For y = 2 To FINAL5
If Val(ComboBox1) = Hoja5.Cells(y, 1) Then
TextBox11 = Hoja5.Cells(y, 5) 'PvP
Exit For
End If
Next
For z = 2 To FINAL6
If ComboBox1 = Hoja5.Cells(z, 1) Then
TextBox12 = Hoja5.Cells(z, 8) 'Proveedor
Exit For
End If
Next
For z = 2 To FINAL6
If Val(ComboBox1) = Hoja5.Cells(z, 1) Then
TextBox12 = Hoja5.Cells(z, 8) 'Proveedor
Exit For
End If
Next
For z = 2 To FINAL6
If ComboBox1 = Hoja5.Cells(z, 1) Then
TextBox6 = Date 'data
Exit For
End If
Next
For z = 2 To FINAL6
If Val(ComboBox1) = Hoja5.Cells(z, 1) Then
TextBox6 = Date 'fecha
Exit For
End If
Next
End Sub
'Aqui busco el articulo
Private Sub ComboBox1_Enter()
Dim i As Integer
Dim final As Integer
Dim tareas As String
ComboBox1.BackColor = &H80000005
For i = 1 To ComboBox1.ListCount
ComboBox1.RemoveItem 0
Next i
For i = 2 To 10000
If Hoja5.Cells(i, 1) = "" Then
final = i – 1
Exit For
End If
Next
For i = 2 To final
tareas = Hoja5.Cells(i, 1) 'busca el código en la columna
ComboBox1.AddItem (tareas)
Next
'End If
End Sub
'Boton Acceptar
Private Sub CommandButton3_Click()
Dim validar As Boolean
Dim validarfecha As Boolean
If TextBox1 = "" Then 'nom
MsgBox "Selecciona un PRODUCTO para dar salida al material."
ComboBox1.BackColor = &HFF00&
Exit Sub
End If
If TextBox8 = "" Or TextBox8 = 0 Then 'Cant Sortida
MsgBox "Introduce una CANTIDAD DE SALIDA"
TextBox8.BackColor = &HFF00&
Exit Sub
End If
'Valida que Cant. Salida es un numero
validar = IsNumeric(TextBox8.Value)
If validar = False Then
MsgBox "Introduce un valor numèrico en el campo CANTIDAD DE SALIDA"
TextBox8.BackColor = &HFF00&
Exit Sub
End If
If ComboBox2 = "" Then 'Client
MsgBox "Introduce el nombre del CLIENTE"
ComboBox2.BackColor = &HFF00&
Exit Sub
End If
'Valida format data
If TextBox6 = "" Then
MsgBox "Introduce la FECHA DE ENTRADA del material"
TextBox6.BackColor = &HFF00&
TextBox6.SetFocus
Exit Sub
End If
If CDate(TextBox6) < Date - 60 Or CDate(TextBox6) > Date + 30 Then
MsgBox "Fecha incorrecta"
TextBox6.SetFocus
Exit Sub
End If
If Month(CDate(TextBox6)) = Month(Date) - 2 Or _
Month(CDate(TextBox6)) = Month(Date) + 2 Then
MsgBox "No correspon al periodo permitido"
TextBox6.SetFocus
Exit Sub
End If
If TextBox1 <> "" And ComboBox2 <> "" And TextBox6 <> "" And TextBox7 <> ""
nd TextBox8 <> "" Then
ComboBox1.BackColor = -2147483643
TextBox8.BackColor = -2147483643
TextBox6.BackColor = -2147483643
ComboBox2.BackColor = -2147483643
UserForm21.Show
End If
End Sub
Private Sub CommandButton5_Click()
TextBox7 = Hoja3.Range("f65535").End(xlUp).Value + 1
End Sub
'boton imprimir
Private Sub CommandButton6_Click()
Dim NUEVO As Object
Dim i As Integer
Dim H As Integer
Dim l As Integer
Dim m As Integer
Dim j As Integer
Dim T As Integer
Dim FINALTOTAL As Integer
Dim final As Integer
Dim final2 As Integer
Dim ORIGEN As String
Dim SALDO As Double
Dim valor As String
Dim CONTAR As Double
Dim CONTAR1 As Double
Application.ScreenUpdating = False
'Netejo la Fulla 11 moviments per referencia
Hoja11.Visible = xlSheetVisible
Sheets("AlbaraSortida").Select
Range("A1:j18670").Select
Selection.ClearContents
Selection.ClearFormats
Set NUEVO = Hoja11
NUEVO.Activate
For i = 1 To 10000
'ENTRADAS
If Hoja3.Cells(i, 6) = "" Then
final = i – 1
Exit For
End If
Next
'SALIDAS
For H = 1 To 10000
If Hoja3.Cells(H, 6) = "" Then
final2 = H – 1
Exit For
End If
Next
valor = UserForm3.TextBox7 'busco la referencia
' ENTRADAS
CONTAR = 10
' ASIGNAR VALORES PARA EL INFORME
Hoja11.Cells(1, 1) = "Albaràn de salida de material"
Hoja11.Cells(3, 2) = valor 'pongo el nº albaran
For l = 1 To 10000
If Hoja3.Cells(l, 6) = valor Then
Hoja11.Cells(4, 2) = Hoja3.Cells(l, 4) 'pongo el cliente
Hoja11.Cells(5, 2) = Hoja3.Cells(l, 5) 'pongo la fecha
Exit For
End If
Next
For j = 1 To final
If Hoja3.Cells(j, 6) = valor...

2 respuestas

Respuesta
1
El error 13 es que estas intentando almacenar una letra dentro de un campo que es numérico, es lo típico, debes hacer un paso a paso del programa para saber exactamente en que linea esta ocurriendo esto.
Después de tu aportación revisé, i vi que el error no estaba en el código, sino en el echo que el numero automático de albarán de la hoja 3 estaba vacío, i el primero se debe entrar de forma manual... Problema resuelto muchas gracias.
Pequeños consejos grandes soluciones.
Si a alguien le interesa se trata de un sistema de gestión i demanda de material para una escuela....
Respuesta
1
Este error generalmente ocurre porque no coinciden los datos con la definición de la variable que hemos creado, por ejemplo es un campo entero y pretendemos asignar una letra o es un campo texto y estamos asignando algún valor nulo, así que lo mejor es ejecutar el procedimiento paso a paso y así nos vamos a dar cuenta en qué línea se presenta el error y con qué variables.
Suerte !
Cierra la pregunta.
Mil

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas