no era eso

17/04/2005 - 06:28 por Hermano2 | Informe spam
Me refiero a por ejemplo tengo un texto "A" en en la hoja 1, y un texto "B"
en la misma hoja, tendria que pone la formula para que copie en X lugares el
texto "A" y otra formula X para el texto "B", porque no quiero que me copie
las mismas cosas, y poniendo la formula 2 veces no anda y salta un error...
mi punto es que no solo tengo 2 cosas... tengo mas de 100 veces que poner esa
formula en una hoja.. decime como puedo hacer... poneme como harias para
poner esa misma formula en una hora 2 o 3 veces y despues me guio...

la 2da cosa es que tengo el resultado de una formula por ejemplo
=SUMA(J16:J28) y el resultado de eso, quiero que se copie en otra hoja, si lo
hago con esa formula que me diste lo que hace es simplemente copiar la
formula y cambiarla, ejemplo.. si eso le pongo que lo copie con la formula en
D70 me lo deja asi...=SUMA(D57:D69), pongamosle que la formula =SUMA(J16:J28)
diera 20, quiero que se copie 20... no la formula...

la formula que menciono primero es
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$O$10" Then Exit Sub
Dim Hoja As Worksheet
For Each Hoja In Worksheets
Select Case Hoja.Index
Case 1, 3, 4, 5, 8
Target.Copy Hoja.Range("C10,B15,E20,D35")
End Select
Next Hoja
End Sub

se que "$O$10" es el lugar donde esta lo que quiero copiar en varios lados,
Case 1, 3, 4, 5, 8 son las hojas a las que lo quiero copiar y
("C10,B15,E20,D35") seria los lugares en las mencionadas hojas a las cual
tiene que copiar el texto... pero si pongo 2 veces las formula

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$O$10" Then Exit Sub
Dim Hoja As Worksheet
For Each Hoja In Worksheets
Select Case Hoja.Index
Case 1, 3, 4, 5, 8
Target.Copy Hoja.Range("C10,B15,E20,D35")
End Select
Next Hoja
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$F$23" Then Exit Sub
Dim Hoja As Worksheet
For Each Hoja In Worksheets
Select Case Hoja.Index
Case 7, 8, 9, 12, 15
Target.Copy Hoja.Range("D12,V15,O20,P35")
End Select
Next Hoja
End Sub
Me salta un error feo... por eso es que no se que puedo hacer para que
aparezca varias veces en una hoja... si me podes poner 2 o 3 veces la formula
y yo cambio las cosas... eso si.. decime que cambiar para poder poner 100
veces la formula...
 

Leer las respuestas

#1 Héctor Miguel
17/04/2005 - 07:50 | Informe spam
hola, Hermano2 !

1.- dejame comentarte que es conveniente 'mantener' las consultas 'dentro' de su 'hilo original' ;)
2.- no voy a 'entrar en detalles' [pero]... el asunto que pones [no era eso] NO 'concuerda' con el desarrollo de tu 'replica'...
en donde [al final de cuentas] 'queda +/- claro' que los supuestos de mi anterior respuesta son 'acertados' :D
3.- haciendo un 'recorte' de los puntos [que yo considero] 'relevantes' en tu replica...
'tratare' de aclarar algunas situaciones que [creo] te pudieran causar una 'cierta' confusion ;)

espero lograrlo :)) pero... si cualquier duda... comentas?
saludos,
hector.
__1:
... un texto "A"... y un texto "B" en la misma hoja... que copie en X lugares el texto "A" y X... el texto "B"
... poniendo la formula 2 veces no anda y salta un error... no solo tengo 2 cosas... tengo mas de 100 veces
... como... poner esa misma formula en una hoja 2 o 3 veces y despues me guio...



=> en este punto comentas que necesitas poner varias veces una formula [en realidad se trata de 'rutinas']
y 'ejemlpificas' ->una duplicacion total<- de un procedimiento de eventos en el modulo de codigo de 'dicha' hoja
lo cual no es 'prudente' [ademas de que es 'inaceptable' para vba] :(
=> para este caso 'especifico' [varias celdas que requieres de un procedimiento 'diferente' para cada una]...
lo 'recomendable' es una 'estructura' en el codigo [en un mismo y unico procedimiento/evento]...
[p.e.] del tipo 'Select Case...End Select' [entre otros] y un ejemplo de como 'estructurar' el codigo seria el siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("o10,f32")) Is Nothing Then Exit Sub
Dim Hoja As Worksheet
Select Case Target.Address
Case "$O$10"
For Each Hoja In Worksheets
Select Case Hoja.Index
Case 1, 3, 4, 5, 8
Target .Copy Hoja.Range("c10,b15,e20,d35")
End Select
Next
Case "$F$32"
For Each Hoja In Worksheets
Select Case Hoja.Index
Case 7, 8, 9, 11, 15
Target.Copy Hoja.Range("d12,v15,o20,p35")
End Select
Next
End Select
' pon aqui mas 'cases' segun la direccion del 'target'... p.e. Case "$H$50"... pero... 100 cases ???
End Select
End Sub

__2:
... tengo el resultado de una formula por ejemplo =SUMA(J16:J28) y el resultado... quiero que se copie en otra hoja
... con esa formula que me diste lo que hace es simplemente copiar la formula y cambiarla
... si eso le pongo que lo copie con la formula en D70 me lo deja asi...=SUMA(D57:D69)
... pongamosle que la formula =SUMA(J16:J28) diera 20, quiero que se copie 20... no la formula...



=> en este caso, no se [porque no lo comentas] cual es la formula [o la instruccion] que usaste y que no te funciono :((
si suponemos que la formula 'original' esta en la celda 'J29' de la hoja que tiene el codigo...
y quieres 'depositar' [solo] el resultado en la celda es 'D70' de la hoja 'X_Nombre'...
-> usa una instruccion como la siguiente: Worksheets("X_Nombre").Range("d70") = Range("j29")

como podras observar... 'mis' supuestos en el mensaje anterior [si los revisas 'con calma']... siguen siendo 'acertados' ;)
solo me resta comentarte que para el caso de los 100 casos... [probablemente] convendria pensar en una estructura 'diferente'
[p.e. matrices para los rangos 'Target', los rangos -y las hojas- de 'destino', cuando son copia y cuando 'solo resultados, etc.]
si comentas los detalles 'finos' de las situaciones que requieras 'arreglar' :D

Preguntas similares