sleeccionar casi todas las hojas de unlibro

hacmurphy

New Member
Joined
Sep 29, 2005
Messages
31
Hola, tengo un libro, mas o menos con 30 hojas. estoy intenetando que con una macro se seleccionen 25 de ellas para poder trabajar en todas a la vez.
La propiedad Sheets.select, no me sirve, porque selecciona todas las hojas del libro.
y estoy tratando con Worksheets(array(........)).select, pero me da como resultado un error, que me dice que "subscrip out of range"


alguien sabe por que?
muchas gracias!!!!
 
Usando lo que proveó Sakuragy, solamente un poco más nítido (ojalá que no se ofienda, Sakuragy. Su código funcionará asi como es y yo no hubría dicho nada, si no fuera por eso de usar Select con las hojas cuando no es necesario - no sé como se dice «pet peeve» en español fuera de decir que ver eso siempre me molesta).<hr />

<SPAN style="color:#00007F">Option</SPAN> <SPAN style="color:#00007F">Explicit</SPAN>

<SPAN style="color:#00007F">Sub</SPAN> PasteValuesInSeveralSheets()
    
    <SPAN style="color:#00007F">Const</SPAN> c_strContrasena <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN> = "hola"
    <SPAN style="color:#00007F">Dim</SPAN> wsTarget <SPAN style="color:#00007F">As</SPAN> Worksheet
    
    <SPAN style="color:#007F00">'// Bucle para quitar el password</SPAN>
    <SPAN style="color:#00007F">For</SPAN> <SPAN style="color:#00007F">Each</SPAN> wsTarget <SPAN style="color:#00007F">In</SPAN> Worksheets
        wsTarget.Unprotect c_strContrasena
    <SPAN style="color:#00007F">Next</SPAN> wsTarget
    
    <SPAN style="color:#007F00">'// Bucle para cambiar fórmulas a valores</SPAN>
    <SPAN style="color:#00007F">For</SPAN> <SPAN style="color:#00007F">Each</SPAN> wsTarget <SPAN style="color:#00007F">In</SPAN> Worksheets
    
        <SPAN style="color:#00007F">Select</SPAN> <SPAN style="color:#00007F">Case</SPAN> wsTarget.Name
                    
        <SPAN style="color:#00007F">Case</SPAN> "Sheet1", "Sheet3", "Sheet8"
                
            <SPAN style="color:#007F00">' (no se hace nada a las hojas estas)</SPAN>
            
        <SPAN style="color:#00007F">Case</SPAN> <SPAN style="color:#00007F">Else</SPAN>

            <SPAN style="color:#00007F">With</SPAN> wsTarget.UsedRange
                .Formula = .Value
            <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">With</SPAN>
        
        <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Select</SPAN>
    
    <SPAN style="color:#00007F">Next</SPAN> wsTarget
    
    <SPAN style="color:#007F00">'// Bucle para poner el contraseña otra vez</SPAN>
    <SPAN style="color:#00007F">For</SPAN> <SPAN style="color:#00007F">Each</SPAN> wsTarget <SPAN style="color:#00007F">In</SPAN> Worksheets
        wsTarget.Protect Password:=c_strContrasena
    <SPAN style="color:#00007F">Next</SPAN> wsTarget
    
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>


Saludos,
 
Upvote 0

Excel Facts

Copy formula down without changing references
If you have =SUM(F2:F49) in F50; type Alt+' in F51 to copy =SUM(F2:F49) to F51, leaving the formula in edit mode. Change SUM to COUNT.
Actualmente, viéndolo bien, yo hubiera programado así:<hr /><SPAN style="color:#00007F">Option</SPAN> <SPAN style="color:#00007F">Explicit</SPAN>

<SPAN style="color:#00007F">Sub</SPAN> PasteValuesInSeveralSheets()
    
    <SPAN style="color:#00007F">Const</SPAN> c_strContrasena <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN> = "hola"
    <SPAN style="color:#00007F">Dim</SPAN> wsTarget <SPAN style="color:#00007F">As</SPAN> Worksheet

    <SPAN style="color:#007F00">'// Bucle para cambiar fórmulas a valores</SPAN>
    <SPAN style="color:#00007F">For</SPAN> <SPAN style="color:#00007F">Each</SPAN> wsTarget <SPAN style="color:#00007F">In</SPAN> Worksheets
    
        <SPAN style="color:#00007F">Select</SPAN> <SPAN style="color:#00007F">Case</SPAN> wsTarget.Name
                    
        <SPAN style="color:#00007F">Case</SPAN> "Sheet1", "Sheet3", "Sheet8"
                
            <SPAN style="color:#007F00">' (no se hace nada a las hojas estas)</SPAN>
            
        <SPAN style="color:#00007F">Case</SPAN> <SPAN style="color:#00007F">Else</SPAN>

            <SPAN style="color:#00007F">With</SPAN> wsTarget
                .Unprotect c_strContrasena
                <SPAN style="color:#00007F">With</SPAN> .UsedRange
                    .Formula = .Value
                <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">With</SPAN>
                .Protect c_strContrasena
            <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">With</SPAN>
        
        <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Select</SPAN>
    
    <SPAN style="color:#00007F">Next</SPAN> wsTarget
    
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>
 
Upvote 0
hola sak, gracias por tu ayuda, pero no es eso lo que necesito, porque de esa manera, igualmente tengo que poner el nombre de las 50 hojas que quiero seleccionar, sin colocar el nombre de las que no quiero seleccionar, que son solo tres o cuatro.
Me parece que no se puede hacer, actualmente lo tengo asi, nombrando todas las hojs a seleccionar.
de todas formas, agradezco tu ayuda.
ana
 
Upvote 0
Ana,

No creo que usted entendió bien lo que escribió Sakuragy. Vea las modificaciones que hice y tal vez se vea un poco más claro lo que hizo Sakuragy; no es necesario listar los que sí se va a procesar sino uno puede listar solamente las excepciones.
 
Upvote 0
Re. Seleccionar todas la hojas de un libro

Hola Ana.

Primeramente, gracias, Greg por tus modificaciones, solamente soy un newbie.

Segundo, estimada Ana, seguramente pudiste tener alguna confusión con las instrucciones; Explico.


Select Case wsTarget.Name 'Selecciona las hojas de acuerdo a su nombre

Case "Sheet1", "Sheet3", "Sheet8" 'Entre comillas, los nombres de las hojas a las cuales no quieres modificar, si bien creo que dijiste alrededor de 4

' (no se hace nada a las hojas estas) Por lo mismo no hay codigo

Case Else 'Para cualquier otra hoja que no sean las que no quieres modificar

With wsTarget
.Unprotect c_strContrasena 'Desprotege la hoja
With .UsedRange 'Con el rango actual, es decir el que esta en uso.
.Formula = .Value 'Cambia formulas a valores
End With 'Termina
.Protect c_strContrasena 'Protege
End With

End Select

Espero te aclare un poco más. Saludos, y saludos a Greg, excelente.
 
Upvote 0

Forum statistics

Threads
1,223,955
Messages
6,175,605
Members
452,660
Latest member
Zatman

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top