Message error: Desbordamiento

lu_argenitna

Board Regular
Joined
Apr 4, 2006
Messages
106
Hola, estoy tratando de correr una macro que contiene una fórmula y cuando llega a ese punto me aparece el error: "Desbodamiento"
Es una fórmula de este tipo:
form = (Cells(inie - 2, 39) * Cells(inie - 2, 37) + Cells(fils - 2, 39) * Cells(fils - 2, 37)) / Cells(fils, 37)
en donde inie y fils son dos dim definidas con anterioridad.
también intenté armarla con R" &inie-2&" pero me tiraba más errores.

Alguien me puede ayudar?
Gracias.
 

Some videos you may like

Excel Facts

Remove leading & trailing spaces
Save as CSV to remove all leading and trailing spaces. It is faster than using TRIM().

galileogali

Well-known Member
Joined
Oct 14, 2005
Messages
748
El uso que haces de CELLS no es el apropiado. Pero realmente porque no escribes la formula en una CELDA, tal como la escribirias en esa celda sin VBA.
Luego PRENDES el GRABADOR DE MACROS.
A CONTINUACION, vas a la celda que contiene la formula, haces F2, detienes la GRABADORA.
fijate que te quedo, en el modulo que crea la GRABADORA.


GALILEOGALI
 

lu_argenitna

Board Regular
Joined
Apr 4, 2006
Messages
106
Eso ya lo hice, el tema es que las celdas son variantes. Dependen justamente de la variable que definí anteriormente.
Si las celdas no fuesen variantes sería menos complicado.
Tengo que ver como hago para introducir la variante en la fórmula.
En definitiva la fórmula que quiero armar es: =(r1c2*r1c1+r10c2*r10c1)/rc11
en donde las filas son las variantes que ya defini como inie y fils
 

Greg Truby

MrExcel MVP
Joined
Jun 19, 2002
Messages
10,014
Hola Luciana,

Por lo general la forma más fácil es cambiar Excel para mostrarle las fórmulas en forma R1C1, copiarla y pegarla a su código. Es raro que tengo que construir una fórmula R1C1 agregando hileras de characteres, pero sí sucede. Aquí hay pedazos de código donde yo he hecho esto...
Code:
Public Enum eg_Columns
    colCustPO = 1
    colXmitID           '  2  B
    colCustName         '  3  C
    colAcctNum          '  4  D
    colGroupWhse        '  5  E
    colInvcNum          '  6  F
    colInvcLn           '  7  G
    colOrderNum         '  8  H
    colOrderLn          '  9  I
    colTPMNum           ' 10  J
    colTPMLn            ' 11  K
    col1stTry           ' 12  L
    colAllocD           ' 13  M
    colRecdD            ' 14  N
    colEntryD           ' 15  O
    colPODate = 15      ' (column redefinition)
    colPOTAT            ' 16  P
'...
    colMBoL             ' 51 AY
    colPNSupp           ' 52 AZ
    colPartDesc         ' 53 BA
    MaxCount = 53
End Enum

'...
'¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
 Private Sub TrimAndWriteFormulas()
'______________________________________________________________________________
   
    Dim rngCurr As Range, rngCurr2 As Range, rngTarget As Range, rngTCell As Range
    Dim v As Variant
    Dim r&, c%, lngCalcMode As XlCalculation
    Set rngCurr = [A1].CurrentRegion
    Set rngCurr2 = rngCurr.Offset(1, 0).Resize(rngCurr.Rows.Count - 1)
       
    ufxl_ProgressIndicator.SubLabelCaption = "Trimming Spaces"
    ufxl_ProgressIndicator.UpdateProgressMajor 0.001, "TrimSpaces"
    
    myTrim rngCurr2.Columns(eg_Columns.colCustName), " [1 of 10]"
    ufxl_ProgressIndicator.UpdateProgressMajor 0.1, "TrimSpaces"

'...

    Set rngTarget = rngCurr2.Columns(eg_Columns.colBatchNDay)               ' batched by next bus day
    ' =NETWORKDAYS(RC[-3],RC[1], Holidays) <= 2
    Application.StatusBar = "Writing Formula for 'Batched by Next Bus. Day'."
    rngTarget.FormulaR1C1 = "=NETWORKDAYS(RC[" & _
                            (eg_Columns.colOpenD - eg_Columns.colBatchNDay) & _
                            "],RC[" & _
                            (eg_Columns.colOpenD - eg_Columns.colBatchNDay) & _
                            "], Holidays) <= 2"
    ufxl_ProgressIndicator.UpdateProgressMajor 4 / 15, "WriteFormulae"
    PinteLo rngTarget
    
    Set rngTarget = rngCurr2.Columns(eg_Columns.colTimePick)                ' time to pick
    Application.StatusBar = "Writing Formula for 'Time to Pick'."
    ' =(+RC[-2]+RC[-1])-(RC[-6]+RC[-5])
    rngTarget.FormulaR1C1 = "=(+RC[" & _
                            (eg_Columns.colPickD - eg_Columns.colTimePick) & _
                            "]+RC[" & _
                            (eg_Columns.colPickT - eg_Columns.colTimePick) & _
                            "])-(RC[" & _
                            (eg_Columns.colBatchD - eg_Columns.colTimePick) & _
                            "]+RC[" & _
                            (eg_Columns.colBatchT - eg_Columns.colTimePick) & _
                            "])"
    ufxl_ProgressIndicator.UpdateProgressMajor 5 / 15, "WriteFormulae"
    PinteLo rngTarget, 1
'...
End Sub

Como usted puede ver hay que ir quebrando la fórmula a pedazos de characteres fija y characteres que vas a reemplazar con sus variables. ¿Me pregunto si su error es nada más que un caso donde está poniendo referencias absolutas en vez de relativas? ¿Tal vez algo así sirva?
Code:
strFormula = "=(R[1]C[2]*R[1]C[1]+R[10]C[2]*R[10]C[1])/RC[11]"

Espero que ésto le ayude un poco.

Cordialmente,
 

lu_argenitna

Board Regular
Joined
Apr 4, 2006
Messages
106
Greg, muchas gracias por la ayuda!
La verdad es que mi nivel no es tan avanzado como para poder entender todos los códigos que me muestras.
De todos modos, sailepaty tenía razón, el error surge cuando me da cero. Por lo que ahora debería descubrir la forma de que esto no suceda.
Nuevamente gracias por la ayuda.
Saludos,
 

Watch MrExcel Video

Forum statistics

Threads
1,112,882
Messages
5,543,012
Members
410,583
Latest member
gazz57
Top