Por que no funciona

31/07/2007 - 18:34 por Albymar | Informe spam
Hola a todos,
Tengo un Libro.xls con 40 Hojas, donde la Hoja1."General" es una hoja
registro, que tras una Macro (De Hector Miguel) por medio de filtro
avanzado, envio registros, por medio de un criterio, a cada Hoja (39
restantes)...
El problema que tengo es que... despues de realizar esto debo realizar una
columna (K) con saldo pendiente partiendo de un importe que esta en K6,
(K7=K6-I7) ... a si sucesivamente miestras haya valores en A:A

Ya se que arrastrando una determinada formula desde la celda K7 hacia abajo
se soluciona el problema pero quiero que lo haga al mismo tiempo
vuelca/traspasa los datos, pero debido a mis limitados conocimientos de
codigo, como siempre me he "atrancado".

Como primer paso para ver como hacerlo -en una hoja- he realizado lo
siguiente:
V = Range("A6").End(xlDown).Row
Range("K7:K" & V).Formula = "=R[-1]C-RC[-2]"
(Puede ser una animalada ... perdon si lo es, he avisado de conocimientos
limitados) pero me da error...
¿Podeis ayudarme?
Gracias de antemano a todos.

Preguntas similare

Leer las respuestas

#1 Ivan
31/07/2007 - 19:15 | Informe spam
On 31 jul, 18:34, Albymar wrote:
Hola a todos,
Tengo un Libro.xls con 40 Hojas, donde la Hoja1."General" es una hoja
registro, que tras una Macro (De Hector Miguel) por medio de filtro
avanzado, envio registros, por medio de un criterio, a cada Hoja (39
restantes)...
El problema que tengo es que... despues de realizar esto debo realizar una
columna (K) con saldo pendiente partiendo de un importe que esta en K6,
(K7=K6-I7) ... a si sucesivamente miestras haya valores en A:A

Ya se que arrastrando una determinada formula desde la celda K7 hacia abajo
se soluciona el problema pero quiero que lo haga al mismo tiempo
vuelca/traspasa los datos, pero debido a mis limitados conocimientos de
codigo, como siempre me he "atrancado".

Como primer paso para ver como hacerlo -en una hoja- he realizado lo
siguiente:
V = Range("A6").End(xlDown).Row
Range("K7:K" & V).Formula = "=R[-1]C-RC[-2]"
(Puede ser una animalada ... perdon si lo es, he avisado de conocimientos
limitados) pero me da error...
¿Podeis ayudarme?
Gracias de antemano a todos.



hola,

quizas podrias añadir esto dentro del bucle que carga las hojas (tras
haber pegdo lo filtrado)

Sheets(i).Range("k7").Formula = "=k6-i7"
Sheets(i) .Range("k7").AutoFill .Range("k7:k" & .
[a65536].End(xlUp).Row)

si te da conflictos con los filtros hazlo en un bucle a posteriori, y
si no te hace falta mas que el resultado (sin formula) algo como

dim celda as range
with sheets(i)
for each celda in .Range("k7:k" & .[a65536].End(xlUp).Row)
with celda
.value=.offset(-1)-.offset(,-2)
end with
next

a ver que tal

un saludo
Ivan
Respuesta Responder a este mensaje
#2 Ivan
31/07/2007 - 19:18 | Informe spam
On 31 jul, 19:15, Ivan wrote:
On 31 jul, 18:34, Albymar wrote:





> Hola a todos,
> Tengo un Libro.xls con 40 Hojas, donde la Hoja1."General" es una hoja
> registro, que tras una Macro (De Hector Miguel) por medio de filtro
> avanzado, envio registros, por medio de un criterio, a cada Hoja (39
> restantes)...
> El problema que tengo es que... despues de realizar esto debo realizar una
> columna (K) con saldo pendiente partiendo de un importe que esta en K6,
> (K7=K6-I7) ... a si sucesivamente miestras haya valores en A:A

> Ya se que arrastrando una determinada formula desde la celda K7 hacia abajo
> se soluciona el problema pero quiero que lo haga al mismo tiempo
> vuelca/traspasa los datos, pero debido a mis limitados conocimientos de
> codigo, como siempre me he "atrancado".

> Como primer paso para ver como hacerlo -en una hoja- he realizado lo
> siguiente:
> V = Range("A6").End(xlDown).Row
> Range("K7:K" & V).Formula = "=R[-1]C-RC[-2]"
> (Puede ser una animalada ... perdon si lo es, he avisado de conocimientos
> limitados) pero me da error...
> ¿Podeis ayudarme?
> Gracias de antemano a todos.

hola,

quizas podrias añadir esto dentro del bucle que carga las hojas (tras
haber pegdo lo filtrado)

Sheets(i).Range("k7").Formula = "=k6-i7"
Sheets(i) .Range("k7").AutoFill .Range("k7:k" & .
[a65536].End(xlUp).Row)

si te da conflictos con los filtros hazlo en un bucle a posteriori, y
si no te hace falta mas que el resultado (sin formula) algo como

dim celda as range
with sheets(i)
for each celda in .Range("k7:k" & .[a65536].End(xlUp).Row)
with celda
.value=.offset(-1)-.offset(,-2)
end with
next

a ver que tal

un saludo
Ivan- Ocultar texto de la cita -

- Mostrar texto de la cita -



fe de erratas:

esto =>>

Sheets(i) .Range("k7").AutoFill .Range("k7:k" & .
[a65536].End(xlUp).Row)



seria asi=>>

Sheets(i).Range("k7").AutoFill Sheets(i).Range("k7:k" & .
Sheets(i).[a65536].End(xlUp).Row)



o metiendolo en un bloque with (with sheets(i))

disculpas y un saludo
Respuesta Responder a este mensaje
#3 Albymar
31/07/2007 - 19:44 | Informe spam
Gracias, de nuevo Ivan,
Como has podido ver, es una continuacion del post de Jesus Peralta,
"Cumplidas e Incumplidas", pero como es una consulta ajena, he preferido
separarla, y no abusar de tus conocimientos, pero heme hablando de nuevo
contigo que es un placer ...
Referente a tu ayuda, ahora me voy del trabajo, mañana te comento la
aplicacion de tus comentarios a mi libro,
Gracias de nuevo por tu ayuda e interes por este tema.

"Ivan" escribió:

On 31 jul, 19:15, Ivan wrote:
> On 31 jul, 18:34, Albymar wrote:
>
>
>
>
>
> > Hola a todos,
> > Tengo un Libro.xls con 40 Hojas, donde la Hoja1."General" es una hoja
> > registro, que tras una Macro (De Hector Miguel) por medio de filtro
> > avanzado, envio registros, por medio de un criterio, a cada Hoja (39
> > restantes)...
> > El problema que tengo es que... despues de realizar esto debo realizar una
> > columna (K) con saldo pendiente partiendo de un importe que esta en K6,
> > (K7=K6-I7) ... a si sucesivamente miestras haya valores en A:A
>
> > Ya se que arrastrando una determinada formula desde la celda K7 hacia abajo
> > se soluciona el problema pero quiero que lo haga al mismo tiempo
> > vuelca/traspasa los datos, pero debido a mis limitados conocimientos de
> > codigo, como siempre me he "atrancado".
>
> > Como primer paso para ver como hacerlo -en una hoja- he realizado lo
> > siguiente:
> > V = Range("A6").End(xlDown).Row
> > Range("K7:K" & V).Formula = "=R[-1]C-RC[-2]"
> > (Puede ser una animalada ... perdon si lo es, he avisado de conocimientos
> > limitados) pero me da error...
> > ¿Podeis ayudarme?
> > Gracias de antemano a todos.
>
> hola,
>
> quizas podrias añadir esto dentro del bucle que carga las hojas (tras
> haber pegdo lo filtrado)
>
> Sheets(i).Range("k7").Formula = "=k6-i7"
> Sheets(i) .Range("k7").AutoFill .Range("k7:k" & .
> [a65536].End(xlUp).Row)
>
> si te da conflictos con los filtros hazlo en un bucle a posteriori, y
> si no te hace falta mas que el resultado (sin formula) algo como
>
> dim celda as range
> with sheets(i)
> for each celda in .Range("k7:k" & .[a65536].End(xlUp).Row)
> with celda
> .value=.offset(-1)-.offset(,-2)
> end with
> next
>
> a ver que tal
>
> un saludo
> Ivan- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

fe de erratas:

esto =>>

Sheets(i) .Range("k7").AutoFill .Range("k7:k" & .
> [a65536].End(xlUp).Row)

seria asi=>>

Sheets(i).Range("k7").AutoFill Sheets(i).Range("k7:k" & .
>Sheets(i).[a65536].End(xlUp).Row)

o metiendolo en un bloque with (with sheets(i))

disculpas y un saludo


Respuesta Responder a este mensaje
#4 Albymar
01/08/2007 - 11:42 | Informe spam
Hola Ivan, segun te prometi, te contesto ...
He estado probando, modificando, cambiando (en definitiva, liandome...) y al
fina recurro de nuevo a ti.
Con respecto a tu primera opcion:
"... quizas podrias añadir esto dentro del bucle que carga las hojas (tras
haber pegdo lo filtrado)
Sheets(i).Range("k7").Formula = "=k6-i7"
Sheets(i).Range("k7").AutoFill Sheets(i).Range("k7:k" &
.Sheets(i).[a65536].End(xlUp).Row)
si te da conflictos con los filtros hazlo en un bucle a posteriori ...
o metiendolo en un bloque with (with sheets(i))"
...en las tres formas me da el error 438:Objeto no admite esta Propiedad o
metodo.

Con respecto a tu segunda opción:
"... si no te hace falta mas que el resultado (sin formula) algo como
dim celda as range
with sheets(i)
for each celda in .Range("k7:k" & .[a65536].End(xlUp).Row)
with celda
.value=.offset(-1)-.offset(,-2)
end with
next "
... de esta forma, si que sale, pero el proceso parece ser muy lento y tarda
una eternidad...

En la espera de poder solucionarlo, te reitero las gracias por tu ayuda y
amabilidad para conmigo.
Saludos





"Ivan" escribió:

On 31 jul, 19:15, Ivan wrote:
> On 31 jul, 18:34, Albymar wrote:
>
>
>
>
>
> > Hola a todos,
> > Tengo un Libro.xls con 40 Hojas, donde la Hoja1."General" es una hoja
> > registro, que tras una Macro (De Hector Miguel) por medio de filtro
> > avanzado, envio registros, por medio de un criterio, a cada Hoja (39
> > restantes)...
> > El problema que tengo es que... despues de realizar esto debo realizar una
> > columna (K) con saldo pendiente partiendo de un importe que esta en K6,
> > (K7=K6-I7) ... a si sucesivamente miestras haya valores en A:A
>
> > Ya se que arrastrando una determinada formula desde la celda K7 hacia abajo
> > se soluciona el problema pero quiero que lo haga al mismo tiempo
> > vuelca/traspasa los datos, pero debido a mis limitados conocimientos de
> > codigo, como siempre me he "atrancado".
>
> > Como primer paso para ver como hacerlo -en una hoja- he realizado lo
> > siguiente:
> > V = Range("A6").End(xlDown).Row
> > Range("K7:K" & V).Formula = "=R[-1]C-RC[-2]"
> > (Puede ser una animalada ... perdon si lo es, he avisado de conocimientos
> > limitados) pero me da error...
> > ¿Podeis ayudarme?
> > Gracias de antemano a todos.
>
> hola,
>
> quizas podrias añadir esto dentro del bucle que carga las hojas (tras
> haber pegdo lo filtrado)
>
> Sheets(i).Range("k7").Formula = "=k6-i7"
> Sheets(i) .Range("k7").AutoFill .Range("k7:k" & .
> [a65536].End(xlUp).Row)
>
> si te da conflictos con los filtros hazlo en un bucle a posteriori, y
> si no te hace falta mas que el resultado (sin formula) algo como
>
> dim celda as range
> with sheets(i)
> for each celda in .Range("k7:k" & .[a65536].End(xlUp).Row)
> with celda
> .value=.offset(-1)-.offset(,-2)
> end with
> next
>
> a ver que tal
>
> un saludo
> Ivan- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

fe de erratas:

esto =>>

Sheets(i) .Range("k7").AutoFill .Range("k7:k" & .
> [a65536].End(xlUp).Row)

seria asi=>>

Sheets(i).Range("k7").AutoFill Sheets(i).Range("k7:k" & .
>Sheets(i).[a65536].End(xlUp).Row)

o metiendolo en un bloque with (with sheets(i))

disculpas y un saludo


Respuesta Responder a este mensaje
#5 Ivan
01/08/2007 - 17:48 | Informe spam
On 1 ago, 11:42, Albymar wrote:
Hola Ivan, segun te prometi, te contesto ...
He estado probando, modificando, cambiando (en definitiva, liandome...) y al
fina recurro de nuevo a ti.
Con respecto a tu primera opcion:
"... quizas podrias añadir esto dentro del bucle que carga las hojas (tras
haber pegdo lo filtrado)
Sheets(i).Range("k7").Formula = "=k6-i7"
Sheets(i).Range("k7").AutoFill Sheets(i).Range("k7:k" &
.Sheets(i).[a65536].End(xlUp).Row)
si te da conflictos con los filtros hazlo en un bucle a posteriori ...
o metiendolo en un bloque with (with sheets(i))"
...en las tres formas me da el error 438:Objeto no admite esta Propiedad o
metodo.

Con respecto a tu segunda opción:
"... si no te hace falta mas que el resultado (sin formula) algo como
dim celda as range
with sheets(i)
for each celda in .Range("k7:k" & .[a65536].End(xlUp).Row)
with celda
.value=.offset(-1)-.offset(,-2)
end with
next "
... de esta forma, si que sale, pero el proceso parece ser muy lento y tarda
una eternidad...

En la espera de poder solucionarlo, te reitero las gracias por tu ayuda y
amabilidad para conmigo.
Saludos

"Ivan" escribió:



> On 31 jul, 19:15, Ivan wrote:
> > On 31 jul, 18:34, Albymar wrote:

> > > Hola a todos,
> > > Tengo un Libro.xls con 40 Hojas, donde la Hoja1."General" es una hoja
> > > registro, que tras una Macro (De Hector Miguel) por medio de filtro
> > > avanzado, envio registros, por medio de un criterio, a cada Hoja (39
> > > restantes)...
> > > El problema que tengo es que... despues de realizar esto debo realizar una
> > > columna (K) con saldo pendiente partiendo de un importe que esta en K6,
> > > (K7=K6-I7) ... a si sucesivamente miestras haya valores en A:A

> > > Ya se que arrastrando una determinada formula desde la celda K7 hacia abajo
> > > se soluciona el problema pero quiero que lo haga al mismo tiempo
> > > vuelca/traspasa los datos, pero debido a mis limitados conocimientos de
> > > codigo, como siempre me he "atrancado".

> > > Como primer paso para ver como hacerlo -en una hoja- he realizado lo
> > > siguiente:
> > > V = Range("A6").End(xlDown).Row
> > > Range("K7:K" & V).Formula = "=R[-1]C-RC[-2]"
> > > (Puede ser una animalada ... perdon si lo es, he avisado de conocimientos
> > > limitados) pero me da error...
> > > ¿Podeis ayudarme?
> > > Gracias de antemano a todos.

> > hola,

> > quizas podrias añadir esto dentro del bucle que carga las hojas (tras
> > haber pegdo lo filtrado)

> > Sheets(i).Range("k7").Formula = "=k6-i7"
> > Sheets(i) .Range("k7").AutoFill .Range("k7:k" & .
> > [a65536].End(xlUp).Row)

> > si te da conflictos con los filtros hazlo en un bucle a posteriori, y
> > si no te hace falta mas que el resultado (sin formula) algo como

> > dim celda as range
> > with sheets(i)
> > for each celda in .Range("k7:k" & .[a65536].End(xlUp).Row)
> > with celda
> > .value=.offset(-1)-.offset(,-2)
> > end with
> > next

> > a ver que tal

> > un saludo
> > Ivan- Ocultar texto de la cita -

> > - Mostrar texto de la cita -

> fe de erratas:

> esto =>>

> Sheets(i) .Range("k7").AutoFill .Range("k7:k" & .
> > [a65536].End(xlUp).Row)

> seria asi=>>

> Sheets(i).Range("k7").AutoFill Sheets(i).Range("k7:k" & .
> >Sheets(i).[a65536].End(xlUp).Row)

> o metiendolo en un bloque with (with sheets(i))

> disculpas y un saludo- Ocultar texto de la cita -

- Mostrar texto de la cita -



hola ¿Alberto?¿Alba?

a mi esta adaptacion me funciona sin problemas

Sub Filtro_avanzado()
Dim Rango_lista As String, i As Integer
Application.ScreenUpdating = False
With Worksheets("Hoja1")
Rango_lista = .Range("a1:i" & .[a65536].End(xlUp).Row).Address
For i = 2 To ThisWorkbook.Sheets.Count
.Range(Rango_lista).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Sheets(i).Range("H3:H4"), _
CopyToRange:=Sheets(i).Range("A6:I6")
With Sheets(i)
''' .[k6] = 10000
.[k7].Formula = "=k6-i7"
.[k7].AutoFill Destination:=.Range("k7:k" & _
.[a65536].End(xlUp).Row)
End With
Next
End With
End Sub

lo unico que he hecho (pero sin ello tambien parece funcionar) es
asignar un valor inicial a K6, pues sino siempre seria negativo, pero
ya te digo que esto no parece influir (de hecho las ultimas pruebas
esta como lo ves, como comentario)

mira a ver sei hay algo mas que por aqui desconozcamos, y comentas
como te ha ido

un saludo
Ivan

PD: aunque no lo creo, pues te hubiera dado problemas con los filtros
¿el usar Sheets en lugar de Worksheets es por tener alguna hoja de
graficos?
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida