Notifications
Clear all

Array

9 Posts
2 Usuários
0 Reactions
1,549 Visualizações
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Erro no array

Quando coloco somente Jan funciona

Tentei também ThisWorkbook.Sheets(sheetsArray(x)).Range mas sem sucesso

 Dim sheetsArray As Variant

sheetsArray = Array("Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez")

For Each x In sheetsArray
ThisWorkbook.Sheets(x).Range("B7").FormulaLocal = "123.456"
ThisWorkbook.Sheets(x).Range("F7").FormulaLocal = "Fulano"
Next x

Obrigado !

 
Postado : 22/02/2017 7:51 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tente assim :

Dim sheetsArray As Variant

sheetsArray = Array("Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez")

    For Each x In sheetsArray
        
        With Sheets(x)
            .Range("B7").FormulaLocal = "123.456"
            .Range("F7").FormulaLocal = "Fulano"
        End With
        
    Next x

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/02/2017 10:40 pm
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Mauro recebi mensagem de proteção

Mas como pode ver no código já está desprotgendo e protegendo com esse código abaixo

Sub Desprotege()

ActiveSheet.Unprotect Password:="123"

End Sub

Sub Protege()

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowInsertingRows:=True, Password:="123"

End Sub

Reparei que somente acontece quando executa macro para várias planilhas ao mesmo tempo, como é o caso

 
Postado : 23/02/2017 3:31 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Use desta forma:

Dim sheetsArray As Variant

sheetsArray = Array("Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez")

    For Each x In sheetsArray
        
        With Sheets(x)
        
            .Unprotect Password:="123"
            
            .Range("B7").FormulaLocal = "123.456"
            .Range("F7").FormulaLocal = "Fulano"
            
            .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowInsertingRows:=True, Password:="123"
        
        End With
        
    Next x

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/02/2017 3:50 am
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Então eu fiz isso, continua aparecendo a mensagem !

Todas as planilhas estão bloqueada desse jeito - Modulo com nome Secure e depois chamei da seguinte forma conforme o codigo no final

Esse é código do modulo com o nome Secure

Sub Desprotege()

    ActiveSheet.Unprotect Password:="123"

End Sub

Sub Protege()

    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowInsertingRows:=True, Password:="123"

End Sub

Chamei na planilha

Call Secure.Desprotege

Call Secure.Protege
 
Postado : 23/02/2017 5:56 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Voce deve chamar a rotina que desprotege em cada loop do array, não antes; que e o que aparenta estar fazendo

 For Each x In sheetsArray
        
        With Sheets(x)
        
            Call Secure.Desprotege   '.Unprotect Password:="123"
            
            .Range("B7").FormulaLocal = "123.456"
            .Range("F7").FormulaLocal = "Fulano"
            
            '.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowInsertingRows:=True, Password:="123"
             Call Secure.Protege

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/02/2017 7:36 am
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Já fiz isso Reinaldo !

Segue a planilha, macabro isso !

 
Postado : 23/02/2017 10:43 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A rotina de desproteger/proteger remetem/atuam na sheet activa (activesheet), então sem alterar essas rotinas, ative a shhet(x)

Sub Perfil()
Dim sheetsArray As Variant

sheetsArray = Array("Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez")

For Each x In sheetsArray
Sheets(x).Activate
    With Sheets(x)
        Call Secure.Desprotege
        .Range("B7").FormulaLocal = "123.456"
        .Range("F7").FormulaLocal = "Maria"
        Call Secure.Protege
    End With
Next x
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/02/2017 12:59 pm
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Funcionou ! Obrigado !

 
Postado : 23/02/2017 1:08 pm