es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de desbordamiento cuando la macro es llamada por otra macro, pero no de forma individual.

He estado buscando en Internet para tratar de encontrar una solución o al menos entender por qué sucede esto. No voy a escribir el código completo aquí ya que es enorme, pero básicamente, tengo una macro que realiza múltiples cálculos sobre números de población para obtener porcentajes y cosas así. La macro funciona perfectamente por sí misma.

El problema surge más tarde, actualmente estoy construyendo un “ReportMaker” que abriría varios archivos de Excel y volcaría la información en un documento de Word para automatizar la creación de cualquier informe. Cuando este nuevo libro de trabajo llama a la macro inicial que funcionaba perfectamente por sí misma, obtengo un error de desbordamiento en esta línea (La que tiene la flecha delante):

        If Zone_Primaire = True Then

            wb_Resultat.Worksheets("Profil FR").Rows(i).NumberFormat = "0%"

    ====>    wb_Resultat.Worksheets("Profil FR").Cells(i, Colonne + 2) = (wb_Resultat.Worksheets("Profil FR").Cells(i - wb_cour.Worksheets("Template").Cells(i, 3), Colonne + 2) - wb_Resultat.Worksheets("Profil FR").Cells(i - wb_cour.Worksheets("Template").Cells(i, 2), Colonne + 2)) / wb_Resultat.Worksheets("Profil FR").Cells(i - wb_cour.Worksheets("Template").Cells(i, 2), Colonne + 2)

        Else

            'wb_Resultat.Worksheets(1).Cells(i, Colonne + 2) = wb_Resultat.Worksheets(1).Cells(i, Nb_Benchmark + Colonne + 5) / wb_Resultat.Worksheets(1).Cells(k, Nb_Benchmark + Colonne + 5)


            wb_Resultat.Worksheets("Profil FR").Cells(i + Ligne_Insert, Colonne + 2) = (wb_Resultat.Worksheets("Profil FR").Cells(i + Ligne_Insert - wb_cour.Worksheets("Template").Cells(i, 3), Colonne + 2) - wb_Resultat.Worksheets("Profil FR").Cells(i + Ligne_Insert - wb_cour.Worksheets("Template").Cells(i, 2), Colonne + 2)) / wb_Resultat.Worksheets("Profil FR").Cells(i + Ligne_Insert - wb_cour.Worksheets("Template").Cells(i, 2), Colonne + 2)

        End If

He buscado entender por qué sucede esto y aún no entiendo cómo obtengo este error en casos específicos y también hay muy pocas variables capaces de causarlo.

wb_resultat y wb_cour se han declarado como workbook, i como entero, colonne como entero.

colonne nunca supera realmente 10 e i es 11.

Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándose en la información proporcionada, parece que se está produciendo un error de desbordamiento en la línea donde se realiza un cálculo. Esto podría deberse a una o más de las siguientes razones:

    • Los valores utilizados en el cálculo son demasiado grandes o demasiado pequeños para ser manejados por el tipo de datos utilizado. Por ejemplo, si el cálculo implica dividir un número muy grande por un número muy pequeño, podría provocar un error de desbordamiento.
    • El resultado del cálculo está fuera del rango de valores que se pueden almacenar en el tipo de datos utilizado. Por ejemplo, si se espera que el cálculo resulte en un número mayor que el valor máximo que se puede almacenar en un tipo de datos entero, se produciría un error de desbordamiento.
    • Existe un error lógico en el código que está causando que el cálculo se realice incorrectamente.

    Para solucionar el problema, podría intentar lo siguiente:

    • Verificar los valores utilizados en el cálculo para asegurarse de que estén dentro del rango esperado.
    • Utilizar un tipo de datos más grande (como Long o Double) para manejar valores más grandes.
    • Verificar nuevamente la lógica del código para asegurarse de que el cálculo se esté realizando correctamente.

    Además, podría ser útil proporcionar más información o el código completo para un análisis y solución de problemas más detallado.

Comments are closed.