UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1 Error 13 - No coinciden los tipos el 03/01/14, 05:57 pm

diegoexcel


Buenas tardes, soy nuevo con la edición de macros, y estoy teniendo un problema con una macro que siempre funcionó sin inconvenientes... de repente dejó de funcionar... El error que se genera es "Error 13 No coinciden los tipos" ... les paso el código de la macro para ver si me pueden ayudar, desde ya muchas gracias por su tiempo! 

Option Explicit

Public RutaArchivo As String
Public ArchivoNuevo As Integer
Public btnOpciones As Boolean


Public strFecha As String * 9
Public strNombre As String
Public strNomFinal As String
Public curValor As Currency

Public Sub main()
  Dim intFila As Integer
  Dim intColumna As Integer
  Dim intFilaRes As Integer
  Dim intColumnaRes As Integer
  Dim finColumnas As Integer
  Dim finFilas As Integer
  
' Control de errores
On Error GoTo GenerarERROR

'Borra el contenido de la página de resultados
Sheets("TEC").Select
Rows("2:4368").Select
Selection.Delete Shift:=xlUp
Range("A2").Select


'SE GENERA EL RESULTADO CORRESPONDIENTE A LAS TASAS LIBOR.
    Sheets("Libor").Select
    'Toma la fecha correspondiente a las tasas libor importadas de Reuters.
    strFecha = Format(Mid(Trim(Cells(13, 1)), Len(Trim(Cells(13, 1))) - 7), "dd-mmm-yy")
    intFila = 15
    intColumna = 1
    intFilaRes = 2
    intColumnaRes = 1
    finColumnas = 11
    finFilas = 45
    
    'Mientras haya tasas Libor.
    While intFila < finFilas
      If Sheets("Libor").Cells(intFila, intColumna) <> "" Then
  
  '    While Sheets("Libor").Cells(intFila, intColumna) <> "" 'And Sheets("Libor").Cells(intFila + 1, intColumna) <> ""
        'Genera el código de la tasa, eliminando del nombre blancos y puntos.
        strNombre = NombreSinBlancos(Trim(Sheets("Libor").Cells(intFila, intColumna)))
        intColumna = intColumna + 1
        
  '      While Sheets("Libor").Cells(intFila, intColumna) <> ""
        While intColumna < finColumnas
          If Sheets("Libor").Cells(intFila, intColumna) <> "" Then
            'Le concatena el período al que corresponde la tasa Libor,
            'al nombre obtenido anteriormente.
            strNomFinal = strNombre + Periodo(Trim(Sheets("Libor").Cells(14, intColumna).Text))
    '        curValor = Sheets("Libor").Cells(intFila, intColumna).Text
            
            'Carga el Código generado en la hoja de resultados de nombre "TEC".
            Sheets("TEC").Cells(intFilaRes, intColumnaRes).Value = strNomFinal
            
            'Carga el Valor obtenido en la hoja de resultados de nombre "TEC".
            'Sheets("TEC").Cells(intFilaRes, intColumnaRes + 1).Value = curValor
            Sheets("TEC").Cells(intFilaRes, intColumnaRes + 1).Value = Sheets("Libor").Cells(intFila, intColumna).Value
            
            'Carga la Fecha obtenida en la hoja de resultados de nombre "TEC"
            Sheets("TEC").Select
            Cells(intFilaRes, intColumnaRes + 2).Select
            
'            Selection.NumberFormat = "d-mmm-yy"
            Sheets("TEC").Cells(intFilaRes, intColumnaRes + 2).Value = CDate(strFecha)
            
            intFilaRes = intFilaRes + 1
          End If
          intColumna = intColumna + 1
  '        Sheets("Libor").Select
        
        Wend
    End If
    intFila = intFila + 1
    intColumna = 1
    Wend
    
'SE GENERA  EL RESULTADO CORRESPONDIENTE A LAS TASAS ENCUESTAS CARGADAS POR EL USUARIO.
If Sheets("Encuestas").btnSi.Value Then
    Sheets("Encuestas").Select
      intFila = 6
      intColumna = 1
      
      'Mientras haya tasas Encuestas.
      While Sheets("Encuestas").Cells(intFila, intColumna) <> ""
        
        'Carga el Código informado por el usuario en la hoja de resultados de nombre "TEC".
        Sheets("TEC").Cells(intFilaRes, intColumnaRes).Value = Sheets("Encuestas").Cells(intFila, intColumna + 3).Value
        
        'Carga el Valor informado por el usuario en la hoja de resultados de nombre "TEC".
        Sheets("TEC").Cells(intFilaRes, intColumnaRes + 1).Value = Sheets("Encuestas").Cells(intFila, intColumna + 1).Value
        
        'Carga la Fecha informada por el usuario en la hoja de resultados de nombre "TEC".
        Sheets("TEC").Select
        Cells(intFilaRes, intColumnaRes + 2).Select
        'Selection.NumberFormat = "d-mmm-yy"
        
        Sheets("TEC").Cells(intFilaRes, intColumnaRes + 2).Value = CDate(Sheets("Encuestas").Cells(intFila, intColumna + 2).Value)
        intFila = intFila + 1
        intFilaRes = intFilaRes + 1
      Wend
  End If
  btnOpciones = False
  Sheets("Encuestas").btnSi.Value = True

Exit Sub

GenerarERROR:
    
'    Set aplicAccess = Nothing
'    Set rsRecordEQ = Nothing
'    Set rsRecordFI = Nothing
    MsgBox Err.Number & " " & Err.Description & Chr(13) & vbCrLf & "Rutina Main - desde Modulo 1.", vbCritical, "ERROR"

End Sub

Public Function Periodo(Perio As String) As String
  
' Busca el Código que le corresponde según sea el período
  Select Case Perio
    Case "1 WEEK"
      Periodo = "7"
    Case "1M"
      Periodo = "30"
    Case "2M"
      Periodo = "60"
    Case "3M"
      Periodo = "90"
    Case "6M"
      Periodo = "180"
    Case "9M"
      Periodo = "270"
    Case "1Y"
      Periodo = "360"
    Case Else
      Periodo = "NNN"
  End Select
  
End Function

Public Function NombreSinBlancos(Nombre As String) As String

  Dim cantChar As Integer
  Dim strSinBcos As String
  
' Elimina del String, los caracteres diferentes a blancos o puntos.
  strSinBcos = Nombre
  While InStr(1, strSinBcos, " ") <> 0 Or InStr(strSinBcos, " ") <> Null Or InStr(1, strSinBcos, ".") <> 0 Or InStr(strSinBcos, ".") <> Null
    If InStr(1, strSinBcos, " ") <> 0 Then
      strSinBcos = Mid(strSinBcos, 1, InStr(1, strSinBcos, " ") - 1) + Mid(strSinBcos, InStr(1, strSinBcos, " ") + 1)
    Else
      strSinBcos = Mid(strSinBcos, 1, InStr(1, strSinBcos, ".") - 1) + Mid(strSinBcos, InStr(1, strSinBcos, ".") + 1)
    End If
  Wend
  NombreSinBlancos = strSinBcos

End Function

Sub SalvarCsv()
'
' Control de errores
On Error GoTo GenerarERROR

' Salva la hoja de nombre "TEC", con extensión CSV,
  Sheets("TEC").Select
'
  Range("A1").Select
  ChDir EsteLibro.Path
'
'
ActiveSheet.SaveAs FileName:=EsteLibro.Path + "\TEC.csv", _
      FileFormat:=xlCSV, CreateBackup:=False

      
Exit Sub

GenerarERROR:

  If Err.Number = 1004 Then
    MsgBox "El documento  no ha sido salvado con extensión 'CSV'. La aplicación Base de Tasas no tendrá los últimos datos generados."
  Else
    MsgBox Err.Number & " " & Err.Description & Chr(13) & vbCrLf & "Rutina SalvarCsv - desde Modulo 1.", vbCritical, "ERROR"
  End If

End Sub
Sub SalvarXls()
'
' Control de errores
On Error GoTo GenerarERROR

' Salva el archivo Excel
    Sheets("Libor").Select
    Range("A1").Select
    ActiveWorkbook.SaveAs FileName:= _
        EsteLibro.Path + "\TEC Modificada.xls", FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False

Exit Sub

GenerarERROR:
    
  If Err.Number = 1004 Then
    MsgBox "El documento  no ha sido salvado con extensión 'XLS'."
  Else
    MsgBox Err.Number & " " & Err.Description & Chr(13) & vbCrLf & "Rutina SalvarXls - desde Modulo 1.", vbCritical, "ERROR"
  End If

End Sub


Saludos! 
Gracias.

tyno


Hola Diego, bien venido.

Cuando salta este error, ¿el depurador de errores que linea del código que tienes te indica?, es decir cuando salta el error 13 aparece el cartelito que te indica dicho error y en el mismo esta la opción de depurar el error con el botón Depurar, esto te lleva por lo general a la linea que genera el error y la remarca en amarillo. Pues bien es esa linea la que debes indicarnos para ver si te podemos ayudar.
Otra cosa en relación a ese error es verificar los datos que esta manejando la macro, quizás algún numero  o una fecha como texto porque veo que manejas muchas variables del tipo Integer. Si dices que todo funcionaba bien es bastante probable y bastante común el cambiar el formato de algún dato por accidente o descuido, incluso puede haber directamente un texto en lugar de un valor. Sería cuestión que revises esto. Saludos

diegoexcel


Hola Tyno, muchas gracias por tu aporte... respecto a las variables las revisé y no encontré ninguna con un formato erróneo.
Sobre la línea del error tenés razón.. y olvidé marcarla.. paso el detalle donde marca el error:

Option Explicit

Public RutaArchivo As String
Public ArchivoNuevo As Integer
Public btnOpciones As Boolean


Public strFecha As String * 9
Public strNombre As String
Public strNomFinal As String
Public curValor As Currency

Public Sub main()
  Dim intFila As Integer
  Dim intColumna As Integer
  Dim intFilaRes As Integer
  Dim intColumnaRes As Integer
  Dim finColumnas As Integer
  Dim finFilas As Integer
  
' Control de errores
On Error GoTo GenerarERROR

'Borra el contenido de la página de resultados
Sheets("TEC").Select
Rows("2:4368").Select
Selection.Delete Shift:=xlUp
Range("A2").Select


...................




Desde ya, muchas gracias! saludos!

tyno


Ok, ¿este código lo estas utilizando en un modulo o en el editor de una Hoja en particular?, es decir como invocas este código, tenes algún botón al  cual le asignaste la macro o como sería? Si este código esta en un modulo entonces proba de quitar el Public en esa linea de manera que te quede solamente Sub main().

diegoexcel


Tyno, hola nuevamente... muchas gracias por tu tiempo.
Te cuento, sí, esta macro la utilizo en una hoja, y la invoco con un botón; voy a probar sacando el Public y luego te cuento.

Gracias nuevamente!

tyno


Hola Diego.
En este caso proba de utilizar Private Sub CommandButton1_Click() en lugar de Public Sub main() o Sub main(), es decir si estamos hablando que el código de macro esta en la Hoja, por lo que también supongo que estas utilizando un botón control activex. O sea la idea es que el código que estas utilizando quede dentro del botón:

Private Sub CommandButton1_Click()


'mi_codigo...


End Sub

Aunque también podes invocar el código indirectamente desde el botón de esta manera si todo esta en una misma Hoja:

Private Sub CommandButton1_Click()
main
End Sub


Sub main()
....
End sub

O bien:

Private Sub CommandButton1_Click()
call main
End Sub


Private Sub main()
....
End sub



También deberías cambiar el tipo de declaración de las variables las cuales quedarían por encima del código del botón:

Public RutaArchivo As String
Public ArchivoNuevo As Integer
Public btnOpciones As Boolean


Public strFecha As String * 9
Public strNombre As String
Public strNomFinal As String
Public curValor As Currency

En cada caso reemplazar Public solo por Dim, es decir hasta donde se, no se puede declarar Public una variable particularmente en el editor de una Hoja porque este entorno es privado de la Hoja.

Esto es cuestión de ir probando. Saludos

diegoexcel


Hola Tyno, estuve probando lo que me comentás pero no funcionó, de todos modos me di cuenta que está dentro de un módulo.. yo me equivoqué y te dije que estaba dentro de una hoja, pero no.. esta dentro de un módulo y se lo invoca desde un botón.

Gracias por tu ayuda!

tyno


Ok. ¿pero solucionaste el problema?
Anteriormente habias indicado que el depurador de macros te marcaba el rotulo de la macro:

Public Sub main()
  Dim intFila As Integer
  Dim intColumna As Integer
  Dim intFilaRes As Integer
  Dim intColumnaRes As Integer
  Dim finColumnas As Integer
  Dim finFilas As Integer




Lo cual no dice mucho, por lo que se puede probar es quitar momentaneamente la linea que depura el error:

' Control de errores
On Error GoTo GenerarERROR

Esta linea habría que dejarla como texto y volver a ejecutar la macro, entonces cuando salte el error oprimir el botón para depurar y si el depurador de errores marca una linea especifica  dentro del código:

Para dejar esa linea como texto se puede hacer así
' Control de errores
''''''''''''On Error GoTo GenerarERROR

Desde luego que basta con un solo apostrofe, yo a veces le inserto varios, como lo podrás ver, simplemente para luego encontrar más rápido la linea.

diegoexcel


Tyno... muchas gracias de nuevo por tu tiempo! aún no solucioné el error, ya que soy nuevo en Visual.. sé de otras plataformas pero muy poco de Visual.. y gente como vos ayuda a que los que no saben como yo, aprendan cada vez un poco más.. gracias!

Hice lo que me comentaste, te paso el código entero para no perder ninguna línea, marqué en rojo donde arroja el error:



Option Explicit

Public RutaArchivo As String
Public ArchivoNuevo As Integer
Public btnOpciones As Boolean


Public strFecha As String * 9
Public strNombre As String
Public strNomFinal As String
Public curValor As Currency

Public Sub main()
  Dim intFila As Integer
  Dim intColumna As Integer
  Dim intFilaRes As Integer
  Dim intColumnaRes As Integer
  Dim finColumnas As Integer
  Dim finFilas As Integer
  
' Control de errores
''''' On Error GoTo GenerarERROR

'Borra el contenido de la página de resultados
Sheets("TEC").Select
Rows("2:4368").Select
Selection.Delete Shift:=xlUp
Range("A2").Select


'SE GENERA EL RESULTADO CORRESPONDIENTE A LAS TASAS LIBOR.
    Sheets("Libor").Select
    'Toma la fecha correspondiente a las tasas libor importadas de Reuters.
    strFecha = Format(Mid(Trim(Cells(13, 1)), Len(Trim(Cells(13, 1))) - 7), "dd-mmm-yy")
    intFila = 15
    intColumna = 1
    intFilaRes = 2
    intColumnaRes = 1
    finColumnas = 11
    finFilas = 45
    
    'Mientras haya tasas Libor.
    While intFila < finFilas
      If Sheets("Libor").Cells(intFila, intColumna) <> "" Then
  
  '    While Sheets("Libor").Cells(intFila, intColumna) <> "" 'And Sheets("Libor").Cells(intFila + 1, intColumna) <> ""
        'Genera el código de la tasa, eliminando del nombre blancos y puntos.
        strNombre = NombreSinBlancos(Trim(Sheets("Libor").Cells(intFila, intColumna)))
        intColumna = intColumna + 1
        
  '      While Sheets("Libor").Cells(intFila, intColumna) <> ""
        While intColumna < finColumnas
          If Sheets("Libor").Cells(intFila, intColumna) <> "" Then
            'Le concatena el período al que corresponde la tasa Libor,
            'al nombre obtenido anteriormente.
            strNomFinal = strNombre + Periodo(Trim(Sheets("Libor").Cells(14, intColumna).Text))
    '        curValor = Sheets("Libor").Cells(intFila, intColumna).Text
            
            'Carga el Código generado en la hoja de resultados de nombre "TEC".
            Sheets("TEC").Cells(intFilaRes, intColumnaRes).Value = strNomFinal
            
            'Carga el Valor obtenido en la hoja de resultados de nombre "TEC".
            'Sheets("TEC").Cells(intFilaRes, intColumnaRes + 1).Value = curValor
            Sheets("TEC").Cells(intFilaRes, intColumnaRes + 1).Value = Sheets("Libor").Cells(intFila, intColumna).Value
            
            'Carga la Fecha obtenida en la hoja de resultados de nombre "TEC"
            Sheets("TEC").Select
            Cells(intFilaRes, intColumnaRes + 2).Select
            
'            Selection.NumberFormat = "d-mmm-yy"
            Sheets("TEC").Cells(intFilaRes, intColumnaRes + 2).Value = CDate(strFecha)
            
            intFilaRes = intFilaRes + 1
          End If
          intColumna = intColumna + 1
  '        Sheets("Libor").Select
        
        Wend
    End If
    intFila = intFila + 1
    intColumna = 1
    Wend
    
'SE GENERA  EL RESULTADO CORRESPONDIENTE A LAS TASAS ENCUESTAS CARGADAS POR EL USUARIO.
If Sheets("Encuestas").btnSi.Value Then
    Sheets("Encuestas").Select
      intFila = 6
      intColumna = 1
      
      'Mientras haya tasas Encuestas.
      While Sheets("Encuestas").Cells(intFila, intColumna) <> ""
        
        'Carga el Código informado por el usuario en la hoja de resultados de nombre "TEC".
        Sheets("TEC").Cells(intFilaRes, intColumnaRes).Value = Sheets("Encuestas").Cells(intFila, intColumna + 3).Value
        
        'Carga el Valor informado por el usuario en la hoja de resultados de nombre "TEC".
        Sheets("TEC").Cells(intFilaRes, intColumnaRes + 1).Value = Sheets("Encuestas").Cells(intFila, intColumna + 1).Value
        
        'Carga la Fecha informada por el usuario en la hoja de resultados de nombre "TEC".
        Sheets("TEC").Select
        Cells(intFilaRes, intColumnaRes + 2).Select
        'Selection.NumberFormat = "d-mmm-yy"
        
        Sheets("TEC").Cells(intFilaRes, intColumnaRes + 2).Value = CDate(Sheets("Encuestas").Cells(intFila, intColumna + 2).Value)
        intFila = intFila + 1
        intFilaRes = intFilaRes + 1
      Wend
  End If
  btnOpciones = False
  Sheets("Encuestas").btnSi.Value = True

Exit Sub

GenerarERROR:
    
'    Set aplicAccess = Nothing
'    Set rsRecordEQ = Nothing
'    Set rsRecordFI = Nothing
    MsgBox Err.Number & " " & Err.Description & Chr(13) & vbCrLf & "Rutina Main - desde Modulo 1.", vbCritical, "ERROR"

End Sub

Public Function Periodo(Perio As String) As String
  
' Busca el Código que le corresponde según sea el período
  Select Case Perio
    Case "1 WEEK"
      Periodo = "7"
    Case "1M"
      Periodo = "30"
    Case "2M"
      Periodo = "60"
    Case "3M"
      Periodo = "90"
    Case "6M"
      Periodo = "180"
    Case "9M"
      Periodo = "270"
    Case "1Y"
      Periodo = "360"
    Case Else
      Periodo = "NNN"
  End Select
  
End Function

Public Function NombreSinBlancos(Nombre As String) As String

  Dim cantChar As Integer
  Dim strSinBcos As String
  
' Elimina del String, los caracteres diferentes a blancos o puntos.
  strSinBcos = Nombre
  While InStr(1, strSinBcos, " ") <> 0 Or InStr(strSinBcos, " ") <> Null Or InStr(1, strSinBcos, ".") <> 0 Or InStr(strSinBcos, ".") <> Null
    If InStr(1, strSinBcos, " ") <> 0 Then
      strSinBcos = Mid(strSinBcos, 1, InStr(1, strSinBcos, " ") - 1) + Mid(strSinBcos, InStr(1, strSinBcos, " ") + 1)
    Else
      strSinBcos = Mid(strSinBcos, 1, InStr(1, strSinBcos, ".") - 1) + Mid(strSinBcos, InStr(1, strSinBcos, ".") + 1)
    End If
  Wend
  NombreSinBlancos = strSinBcos

End Function

Sub SalvarCsv()
'
' Control de errores
On Error GoTo GenerarERROR

' Salva la hoja de nombre "TEC", con extensión CSV,
  Sheets("TEC").Select
'
  Range("A1").Select
  ChDir EsteLibro.Path
'
'
ActiveSheet.SaveAs FileName:=EsteLibro.Path + "\TEC.csv", _
      FileFormat:=xlCSV, CreateBackup:=False

      
Exit Sub

GenerarERROR:

  If Err.Number = 1004 Then
    MsgBox "El documento  no ha sido salvado con extensión 'CSV'. La aplicación Base de Tasas no tendrá los últimos datos generados."
  Else
    MsgBox Err.Number & " " & Err.Description & Chr(13) & vbCrLf & "Rutina SalvarCsv - desde Modulo 1.", vbCritical, "ERROR"
  End If

End Sub
Sub SalvarXls()
'
' Control de errores
On Error GoTo GenerarERROR

' Salva el archivo Excel
    Sheets("Libor").Select
    Range("A1").Select
    ActiveWorkbook.SaveAs FileName:= _
        EsteLibro.Path + "\TEC Modificada.xls", FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False

Exit Sub

GenerarERROR:
    
  If Err.Number = 1004 Then
    MsgBox "El documento  no ha sido salvado con extensión 'XLS'."
  Else
    MsgBox Err.Number & " " & Err.Description & Chr(13) & vbCrLf & "Rutina SalvarXls - desde Modulo 1.", vbCritical, "ERROR"
  End If

End Sub



Desde ya, muchas gracias por tu aporte!

10 control de errores el 06/01/14, 01:59 pm

adolfo castro


Hola mi gran amigo Tyno, eres una maquina, una pena no disponer de tanto tiempo y compartir tantas experiencias como antes, no obstante, y viendo el tema al que os referis, creo que deberíamos exponer el uso de las varibles, y como usarlas, a ver si la semana que viene puedo disponer de un momento y subo un par de apuntes que tenia guardados, para aclararnos un poco mas el uso de las variables en cada caso, y como bien tu dices, en vez de saltar el error, apostrofe y a ver donde se nos parar el depurador, a partir de ese punto ir modificando y corrigiendo,

un saludo Adolfo castro

11 Re: Error 13 - No coinciden los tipos el 06/01/14, 04:07 pm

tyno


Veamos.
Por un lado tenemos  esta variable
 
Public strFecha As String * 9
 
y por otro lado esta la linea del error:
 
Sheets("TEC").Cells(intFilaRes, intColumnaRes + 2).Value = CDate(strFecha)
 
Para empezar no tengo idea porque esta multiplicada por 9 esa variable strFecha, la verdad que no me ha tocado utilizar algo así por lo que de mi parte le quitaría el *9 (Public strFecha As String),  habilitar la línea de depuración de error (''''' On Error GoTo GenerarERROR) quitando los apostrofes y correr la macro a ver que pasa, no te dije desde un principio para modificar esa línea porque mencionaste que todo funcionaba bien y se me ocurrió que era demasiado obvio y que  esto no es  el problema, pero nunca se sabe.
 
Si continúa el error, también tenemos que a la variable strFecha le asignas este dato:
 
    'Toma la fecha correspondiente a las tasas libor importadas de Reuters.
    strFecha = Format(Mid(Trim(Cells(13, 1)), Len(Trim(Cells(13, 1))) - 7), "dd-mmm-yy")
 
Entonces habría que insertar un punto de interrupción y ver que datos son tomados en esta línea, para ello, a la altura de la línea siguiente(intFila = 15), en el margen del editor vas a hacer un click para que aparezca un punto rojo, o sea un punto interrupción, luego corres la macro y cuando se detenga revisas los datos que aparecen en la linea  strFecha = Format(Mid(Trim(Cells(13, 1)), Len(Trim(Cells(13, 1))) - 7), "dd-mmm-yy"),con posicionar el cursor encima de la variable vas a ver en un cuadro el dato que esta tomando dicha variable. Esto como para corroborar que ese dato que esta tomando la variable es el correcto, en caso de ser null quiere decir que hay algo mal en Cells(13, 1) o en Len(Trim(Cells(13, 1))) por ejemplo.
 

Por ultimo si continua el error entonces habría que probar de declarar la variable  strFecha  como Date directamente: Public strFecha  as Date o bien quitar, o mejor convertir a texto con los apostrofes las lineas:  Option Explicit y Public strFecha As String * 9. Con esto no estamos obligados a declarar ninguna variable por lo que las variables no declaradas son tomadas como tipo Variant. En fin por ahora son estas las alternativas que se me ocurren. Saludos

12 Re: Error 13 - No coinciden los tipos el 06/01/14, 04:12 pm

tyno


Hola Adolfo, un saludo.
La verdad que es una muy buena y útil idea el tener un listado de los tipos de variables y también la conversiones. Yo la verdad utilizo muy poco la declaración de variables por una cuestión de haraganidad y porque por lo general como los códigos de macros son para procesos livianos entonces trato de escribir la menor cantidad de lineas posibles, pero siempre es recomendable declarar las variables como corresponde.
Un abrazo.

13 Re: Error 13 - No coinciden los tipos el 06/01/14, 10:15 pm

Igtelo


Hola a todos.

Tyno / Adolfo, que gusto!!

Tyno, no leí todo el post, pero ahora que se "flete" Adolfo, ya es hora de que empiece a entregar lo que sabe...

Adolfo espero ese aporte de variables y nada de que para la próxima semana, ya es hora de menos bla,bla y más acción.

Un abrazo.
Ignacio Téllez

14 Re: Error 13 - No coinciden los tipos el 07/01/14, 08:59 am

tyno


Hola Nacho amigo.
Me parece genial que se agrande el staff de macros del foro, ojala Adolfo pueda estar al pie del cañon.
También ya  es hora que se empiece a funcionar el espíritu "metiche" y que todos le entren a las macros también que no muerden, a los golpes se aprende.
Un abrazo y saludos.

15 Re: Error 13 - No coinciden los tipos el 13/01/14, 01:50 pm

wibly


Tenés razón tyno... en mi caso ya varias veces empecé a estudiar macros y no pude avanzar... lei algunos capitulos de un material pero me quedé... sigue siendo una asignatura pendiente.
Saludos a todos!
Adrián

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.