Solucionar un error de compilación

En un formulario tengo un botton desde el cual llamo a un procedimiento que a su vez llama a una función y a otro procedimiento. El problema esta en que al darle click al botton ejecuta lo que esta allí pero al llegar a la cabecera del procedimiento muestra el error: Se esperaba Sub, function o property. ¿Qué hago?
Este es el código del botón:
Private Sub MostrarD_Click()
Dim ruta As String
Dim vi As String
 vi = V
 ruta = "C:\ENCANTO\TodasLasVillas.xlsm"
 AbrirCuentas ruta, vi
End Sub
Este es el codigo de Abrir Cuentas
Private Sub AbrirCuentas(r As String, V As String)
Dim log As Boolean
Dim i As Integer
Dim ya As Boolean
Dim m As Integer
Dim Meses As Integer
Dim cel1, cel2, cel3, cel4, cel5 As String
'Abrir el libro de las villas
  Workbooks.Open r
  Workbooks("TodasLasVillas.xlsm").Activate
  Windows.Application.ScreenUpdating = False
'Encontrar la villa en el libro de las villas
     log = False
     ya False
     i = 2
     m = 1
     ' Application.ScreenUpdating = False
       Do Until log  'hasta que encuentre la villa
         Sheets(i).Visible = True
         Sheets(i).Select  'comienza con la primer hoja
         If Sheets(i).Name = V Then
          ' Contar los meses de deuda para saber si caben en el formulario
           Meses = ContarMeses(villa)
           If Meses > 12 Then
              MsgBox "Su deuda excede de un (1) año, para ver el detalle imprima su Estado de Cuentas. Se mostrarán los 12 primeros meses y el total general de la deuda"
           End If
          log = True
          Do Until ya 'hasta que sea fin o se llegue a 12 o se llegue al mes en curso
            celda = "AL" + CStr(i)
            celdaA = "A" + CStr(i)
            celdaM = "B" + CStr(i)
            If (Range(celda).Value = "FIN") Or (m = 12) Then
               ya = True
            ElseIf Range(celda).Value > 0 Then
                       cel1 = "B" + CStr(i) 'CELDA MES
                       cel2 = "C" + CStr(i) 'CELDA CUOTA
                       cel3 = "AM" + CStr(i) 'CELDA INTERES
                       cel4 = "AN" + CStr(i) 'CELDA PAGOS
                       cel5 = "AL" + CStr(i) 'CELDA DEUDA
                       AsignaDatos cel1, cel2, cel3, cel4, cel5, m
                End If
             End If
             m = m + 1
          Loop
          Sheets(i).Visible = False
         Else
            Sheets(i).Visible = False
            i = i + 1
         End If
       Loop
        TP = Range("AO2").Value
   Workbooks("TodasLasVillas.xlsm").Close
End Sub

1 Respuesta

Respuesta
1
Para empezar, encuentro una inconsistencia al principio:
-
Private Sub MostrarD_Click()
   Dim ruta As String
   Dim vi As String
   vi = V
   ruta = "C:\ENCANTO\TodasLasVillas.xlsm"
   AbrirCuentas ruta, vi
End Sub 
-
Vi = V dice que la variable "vi" es igual a la variable "V". Esta última no está definida por lo cual supongo que te faltaron las comillas, para que quede de la siguiente manera:
-
vi = "V"
-
Considéralo. Por otro lado, la rutina se detiene en la siguiente linea:
-
log = False
ya False
i = 2
m = 1
-
Pienso que este debe ser el error.
-
También tienes error en
-
Meses = ContarMeses(villa)
-
No haz definido la función Contar Meses
-
Sucede lo mismo con AsignaDatos
Gracias!, si no tenia el signo "=", ya paso, sin embargo el error persiste. V es el nombre de un cuadro de texto. Y la idea es tomar su valor, para utilizarlo posteriormente. ¿No se puede hacer así?. Los demás procedimientos y funciones están definidos en el modulo general. ¿Qué debo hacer?
No se puede. Tienes que calificarlo: v.text o v.name, ya que lo estás definiendo como "Dim V as String"; veo que utilizas esta variable en "If Sheets(i).Name = V Then", por lo cual, el calificador debe ser el contenido, es decir, v.text.
-
Por otro lado, ¿qué hay con la sentencia ya "False" que señalo a continuación?:
-
'Encontrar la villa en el libro de las villas
log = False
ya False
i = 2
m = 1
-
Muchas gracias!. Lo del Log false, te dije anteriormente que si me faltaba la igualdad. Lo del cuatro de texto, perfecto!, muchas gracias!, avance ahora tengo otro detalle que no me permite avanzar!. Sera en otra pregunta, mil gracias...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas