Hola Hector!
Tratare de explicarme.
La hoja1 es una hoja resumen con los totales de calculos de las diferentes
hojas
en ella tengo D29 que es un factor de gastos administrativos
este se calcula en la hoja2 (Estructura de costos) en d32 y el cual depende
de una relacion de costos directos entre indirectos
luego los costos directos son la suma de marteriales, equipos y personal
para una obra
cuando calculo en otra hoja los Analisis de precios unitarios los afecto por
ese porcentaje administrativo (Hoja1!D29)
pero si cambio algun recurso ese factor varia automaticamente, hasta aqui
todo bien...,pero, en algunos casos me piden que modifique los recursos de
una partida especifica sin afectar las otras por lo que debo mantener el
porcentaje inicial.
es por eso que utilizo el cuadro de verificacion llamado (Calculo
automatico/Manual)
en todo caso... consegui una forma de evitar el mensaje y es eliminando
primeramente la formula (para evitar la referencia circular) y luego le
asigno el nuevo valor:
de esta forma
Private Sub CheckBox1_Change()
Application.DisplayAlerts = False
ActiveCell.Activate
If Me.CheckBox1.Value = False Then
[d29].FormulaR1C1 = "=+RC[9]"
[d29].Locked = True
Else
[d29].Locked = False
[d29] = [m29]
[d29].Activate
End If
End Sub
*****lo siguiente evita que se cree una referencia circular*****
Private Sub CheckBox1_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
[d29] = ""
End Sub
Tal vez tengas una idea mejor ? otra forma de hacerlo ?
la idea (creo) es interceptar cuando se cambie el estado delc ontrol pero
antes de que se calcule el libro. ( o algo asi )
estoy seguro de que podras ayudarme , seguro que si ! GRACIAS...
--
Me alimento del conocimiento de todos
Post by Héctor Miguelhola, moises !
Post by Orfaoen la hoja1 incruste un cuadro de verificacion vinculado a la celda A1
Entonces, tengo en Hoja1: D29=+M29 y M29=+SI(ESERR(hoja2!D32),0,hoja2!D32)
y en hoja2!D32=+SI(hoja1!A1,Hoja1!D29,SI(E20,E29/E20,0))
pero deseo que al activar el cuadro me cambie D29=valor(Hoja2!D32) (No la formula)
y simultaneamente en Hoja2 me cambie la formula que tengo D32 por el nuevo valor que tengo en Hoja1!D29
como hacer para evitar el mensaje de referencia circular.?
1) es realmente necesario usar tus referencias circulares en las formulas que expones ?...
(hasta donde se) la unica forma de hacer validas las referencias circulares (es decir)...
cuando una celda necesita calcular con referencia a los valores en ella misma
es habilitando la opcion de iteraciones en (menu) herramientas / opciones / (ficha) calcular
PERO... debes mantener en perspectiva la posibilidad de que otros resultados no sean los actuales (realmente)
ya que veras de manera permanente que la aplicacion esta esperando un re/calculo ("calcular" en la barra de estado)
2) si activas la opcion de iteraciones (aun con solo 1 iteracion), te toca evaluar que tantos resultados desvarian (p.e.)
a) cada vez que se realice un re/calculo... se correran las n_iteraciones para cada celda con referencias circulares
b) lo anterior, bajo un control de resultados esperados puede ser de utilidad (bajo ciertas circunstancias controladas/conocidas/...)
3) tambien seria bueno si expones cual es el objetivo que buscas con esta intrincada red de "dependencias", ya que...
a) la base de excel como hoja de calculo, es llevar el registro (pista o tracking)
-> de cual/es celda/s depende/n de cual/es otra/s (por lo tanto)
b) si una referencia circular se produce porque alguna/s celda/s llegan a depender de los calculos en ella/s misma/s
excel no siempre es capaz de detectar si la referencia circular ha sido intencional (de manera directa o indirecta) -?-
c) al usar las iteraciones reduces la posibilidad de calculos infinitos (por referencias circulares sin solucion)...
(etc. etc. etc.) :))
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.