• Viernes 8 de Noviembre de 2024, 12:47

Autor Tema:  Error'13', No Coinciden Los Tipos  (Leído 7084 veces)

agri13

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Error'13', No Coinciden Los Tipos
« en: Viernes 13 de Julio de 2007, 11:20 »
0
Hola a todos!!

Tengo que rellenar una base de datos, lo cual hago mediante un formulario en el que hay una serie de textbox y botones de comando.
En los textbox introduzco fechas y otros tipos de datos, mientras que uno de los botones de comando lo que hace es dar de alta esos datos, es decir, inserta un renglón y pone en blanco todos los textbox.

La secuencia que utilizo es la siguiente:

Private Sub CommandButton1_Click()
Rem alta
Range("A11").Select
Selection.EntireRow.Insert
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
TextBox7 = Empty
TextBox8 = Empty
TextBox9 = Empty
TextBox10 = Empty
TextBox11 = Empty
TextBox12 = Empty
TextBox13 = Empty
TextBox14 = Empty
TextBox15 = Empty
TextBox16 = Empty
TextBox1.SetFocus
End Sub

Private Sub TextBox1_Change()
Range("B" + Label17).FormulaR1C1 = Val(TextBox1)
End Sub

Private Sub TextBox2_Change()
Range("C" + Label17).FormulaR1C1 = Val(TextBox2)
End Sub

Private Sub TextBox3_Change()
Range("D11").FormulaR1C1 = CDate(TextBox3.Text)
TextBox10 = CDate(Cells(8, 1).Text) - CDate(TextBox3.Text)
End Sub

Private Sub TextBox4_Change()
Range("F" + Label17).FormulaR1C1 = TextBox4
End Sub

Private Sub TextBox5_Change()
Range("G" + Label17).FormulaR1C1 = Val(TextBox5)
End Sub

Private Sub TextBox6_Change()
Range("H11").FormulaR1C1 = CDate(TextBox6.Text)
TextBox11 = CDate(TextBox6.Text) - CDate(TextBox3.Text)
End Sub

Private Sub TextBox7_Change()
Range("J" + Label17).FormulaR1C1 = CDate(TextBox7.Text)
TextBox12 = CDate(Cells(8, 1).Text) - CDate(TextBox7.Text)
TextBox13 = CDate(TextBox7.Text) - CDate(TextBox3.Text)
TextBox14 = CDate(TextBox7.Text) + 222
TextBox15 = CDate(TextBox7.Text) + 282
End Sub

Private Sub TextBox8_Change()
Range("K" + Label17).FormulaR1C1 = TextBox8
End Sub

Private Sub TextBox9_Change()
Range("N" + Label17).FormulaR1C1 = CDate(TextBox9.Text)
TextBox16 = CDate(TextBox3.Text) - CDate(TextBox9.Text)
End Sub

Private Sub TextBox10_Change()
Range("E" + Label17).FormulaR1C1 = Val(TextBox10)
End Sub

Private Sub TextBox11_Change()
Range("I11").FormulaR1C1 = Val(TextBox11)
End Sub

Private Sub TextBox12_Change()
Range("L" + Label17).FormulaR1C1 = Val(TextBox12)
End Sub

Private Sub TextBox13_Change()
Range("M" + Label17).FormulaR1C1 = Val(TextBox13)
End Sub

Private Sub TextBox14_Change()
Range("O" + Label17).FormulaR1C1 = TextBox14
End Sub

Private Sub TextBox15_Change()
Range("P" + Label17).FormulaR1C1 = TextBox15
End Sub

Private Sub TextBox16_Change()
Range("Q" + Label17).FormulaR1C1 = Val(TextBox16)
End Sub


El problema aparece al pulsar el botón, y me da un error '13' en el tiempo de ejecución, no coinciden los tipos.

El lugar donde aparece el error es:

Private Sub TextBox3_Change()
Range("D11").FormulaR1C1 = CDate(TextBox3.Text)
TextBox10 = CDate(Cells(8, 1).Text) - CDate(TextBox3.Text)
End Sub


Saludos, muchas gracias.

Ivanart

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Error'13', No Coinciden Los Tipos
« Respuesta #1 en: Jueves 6 de Septiembre de 2007, 20:57 »
0
hola,

aunque creo que hay otras cuantas cosas revisables en los codigos, cuando pasas los valores a los rangos, prueba a cambiar las expresiones tipo

Código: Text
  1. Range("D11").FormulaR1C1 = CDate(TextBox3.Text)
  2.  

por

Código: Text
  1. Range("D11").FormulaR1C1 = clng(CDate(TextBox3.Text) )
  2.  

o mejor

Código: Text
  1. Range("D11") = clng(CDate(TextBox3.Text) )
  2.  

como te digo, hay otros cuantos factores que podrian estar generando el error (pej. textbox/celdas vacios/as)

por otro lado, pej.en el borrado de los textbox, podrias ahorrarte lineas de codigo con algo mas o menos asi:

Código: Text
  1. Private Sub CommandButton1_Click()
  2.   Dim n As Byte
  3. ' altai
  4.   For n = 1 To 16
  5.     Controls("TextBox" & n) = ""
  6.   Next
  7.   TextBox1.SetFocus
  8. End Sub
  9.  

y para la carga en la hoja me da la impresion de que estas repitiendo acciones innecesarias (sobre todo con los textbox que son el resultado de operar con otros o/y con rangos, salvo que estos a su vez puedan ser editables independientemente.) .  En realidad se podria hacer en el mismo bucle que te pongo para borrar los textbox, pero habria que mirarlo un poco mas despacio y seguramente haria falta algun dato mas.

de todas formas, siquieres prueba la modificacion de los cdate por clng(cdate a ver si es suficiente (a 1ª vista creo que no, pero ....)

e`pero te ayude

un saludo
Ivan