Código em VBA - Erro maluco!

Barata

I folded Myself
Boas.

Sempre que executo o código abaixo dá-me o seguinte erro:
errovq1.jpg


Código:
Public Sub weeks51()
Dim folhas As Double, colunas As Double, linhas As Double

For folhas = 1 To 51
    ActiveSheet.Copy After:=Sheets(folhas)
    ActiveSheet.Name = "Semana" & Format(folhas + 1)
    For coluna = 65 To 66
        For linha = 2 To 50
            Range(Chr(coluna) & Format(linha)).Select
            If coluna = 65 Then
                ActiveCell.Formula = "=[_0150.xls]" & ActiveSheet.Name & "!H" & Format(linha)
            Else
                ActiveCell.Formula = "=[Acab0150.xls]" & ActiveSheet.Name & "!G" & Format(linha)
            End If
        Next linha
    Next coluna

    For coluna = 73 To 74
        For linha = 2 To 50
            Range(Chr(coluna) & Format(linha)).Select
            If coluna = 73 Then
                ActiveCell.Formula = "=[_0150.xls]" & ActiveSheet.Name & "!J" & Format(linha)
            Else
                ActiveCell.Formula = "=[Acab0150.xls]" & ActiveSheet.Name & "!L" & Format(linha)
            End If
        Next linha
    Next coluna
Next folhas

End Sub

Mas afinal o que está mal?! :confused: :confused:
 
Desculpa se isto nao tem nada com o teu problema mais eu tenho uma pequena curosidade de saber como e que fazes para tirar imagens deste tipo8| , ou seja estas que aparecem quando nos aparecem erros.
Desculpa la se for um imcomodo.:kfold:
 
eu desisti de vba quando ele insistiu comigo que 4-1=2 ou parecido já foi á uns valentes anos atraz :007:

ontopic

mete um break no inicio do codigo e manda avançar uma linha de cada vez para saberes onde exactamente ele falha
 
Última edição:
eu desisti de vba quando ele insistiu comigo que 4-1=2 ou parecido já foi á uns valentes anos atraz :007:

ontopic

mete um break no inicio do codigo e manda avançar uma linha de cada vez para saberes onde exactamente ele falha

pois! eu tb me ando a passar com os chiliques da linguagem! Mas não tenho tempo para programar algo numa linguagem mais fiavel (C ou Pascal - são as que melhor conheço!), por isso tenho que me sujeitar a programar sobre uma aplicação MS, neste caso o excel. Daí a necessidade do VBA.

Anyways... o problema deve estar no ActiveSheet.Name . A certa altura fica vazio. Sei disto porque não preenche as folhas com as formulas que deveria. Usa sempre as formulas guardadas na sheet1 ( a base da cópia).

Lembrei-me de um workaround para resolver a situação. Se não for hoje, amanhã programo e logo vejo como ficou. Qualquer noticia volto a postar.

Obrigado pelo input _Neo__ , às vezes um gajo sente-se sozinho no meio de tanto problema estúpido. Rais parta a linguagem... irra!
 
Man...eu sei programar umas coisas e costumo fazer mtas macros pas minhas sheets de excel...por isso vou tentar ajudar o melhor possivel dentro dos conhecimentos que possuo:


Tens de por um watch (akelas linhas vermelhas q servem para a execuçao parar nakele ponto!) e correres o codigo passo a passo (dps de parar no teu watch carregas em F8 pa ires de linha a linha vendo o que acontece)...para veres q linha de codigo é que ele executa kd aparece o erro que mencionas...


Eu axo que como ele fala em "OBJECTO INVOCADO estar desligado" pode ser a [_0150.xls] ou a [Acab0150.xls] que nao estao abertas e ele nao consegue ir la buscar a informaçao...penso eu de que...


For folhas = 1 To 51
ActiveSheet.Copy After:=Sheets(folhas)
ActiveSheet.Name = "Semana" & Format(folhas + 1)

Nesta parte penso que tens um BUG...que é no facto de quando folhas=51...o nome da folha activa vai ser "Semana52" e nao me parece que keiras kisso aconteça (ou estarei enganado) e pode tb ser pelo facto da folha "semana52" nao existir que esta a ocorrer esse erro!

Espero ter ajudado! ;)
PS - Convinha explicares para que serve o codigo pq pode haver pessoas que tenham feito o mesmo de maneira diferente e que funcione! :)
 
Obrigado pelo esforço colocado mas já resolvi o problema. Recorri a outro fórum e encontraram uma solução, cujo principio assenta em primeiro criar todas as sheets e só depois preenche-las com as formulas.

A implementação seria toda de uma assentada ou seja, depois de serem criadas as sheets as formulas seriam preenchidas logo a seguir.

O que fiz foi usar o mesmo principio mas parti-o em duas macros. 1 para criar as sheets e outra para as preencher! E pronto... já funciona às mil maravilhas.

Obrigado malta! ;)
 
Back
Topo