ASimoes7 Posted May 16, 2012 at 01:42 PM Report #456056 Posted May 16, 2012 at 01:42 PM Boa tarde. Será que alguém me pode explicar como posso dividir o código, é que quando estou a correr o código aparece uma mensagem a dizer "procedure too large", e recomenda a divisão do código, mas já tentei de várias maneira, e como não encontrei nenhum exemplo parecido com o meu código, e tb não entendo muito de VBA, as tentativas que tenho feito nunca funcionam. Resumo do código: Private Sub Worksheet_Change(ByVal Target As Range) Dim row As Integer ... Set lc = Worksheets("Contadores").Cells ... row = Target.row col = Target.Column ... If Target = Worksheets("Tabela").Cells(row, col) Then ... If row <> 0 Then ... [quote](aqui é onde se encontra a maior parte do código, onde estão vários "If", logo será onde tenho de partir, mas ainda não consegui acrescentar mais dados noutro "sub" e manter tudo a funcionar)[/quote] Else ... End if End if End if End sub Alguém me pode ajudar a safar disto!? Obrigado. Cumps, ASimoes
jpaulino Posted May 16, 2012 at 02:08 PM Report #456065 Posted May 16, 2012 at 02:08 PM Colocas o código num Sub diferente e depois, no teu código, fazes: If row <> 0 Then SubMeuCodigoSeparado Else SubMeuOutroCodigoSeparado End If 1 Report
ASimoes7 Posted May 16, 2012 at 08:08 PM Author Report #456194 Posted May 16, 2012 at 08:08 PM Boa noite. Tentei fazer como me disse, mas apareceu um erro num outro código. Meti no sub principal: ... If row = 7 Then Sub row7() End If E crie o novo sub assim: Sub row7() lc(6, d1) = lc(6, d1).Value + 1 ... End sub Mas assim sempre que carrego num botão qualquer, da-me um erro no código correspondente a esse botão, por exemplo se carrego no botão 7 o código neste caso é: Sub Botao7() Call sC If vMC = 100 And vCC = "DK153" Then Exit Sub End If ActiveWorkbook.Sheets("Tabela").Activate "[u]mas aqui ocorre um erro[/u]" Range(vCC).Select ActiveCell.Offset(7, vMCo).Value = 1 vMC = vMC + 1 Sheets("Principal").Select End Sub Como consigo dar a volta isto? E já agora, dentro do "sub" secundário não é necessário meter as variáveis novamente como no principal? Cumps, ASimoes
Gnrtuga Posted May 16, 2012 at 08:23 PM Report #456198 Posted May 16, 2012 at 08:23 PM Pois em principio tens de declarar as variáveis dentro de cada procedimento.. Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
jpaulino Posted May 16, 2012 at 08:30 PM Report #456203 Posted May 16, 2012 at 08:30 PM Para chamar um procedimento usar o nome do procedimento e não Sub qualquer coisa. Ou seja, para chamar o row7: Sub row7() lc(6, d1) = lc(6, d1).Value + 1 ... End sub Usas: row7 ou call row7
ASimoes7 Posted May 16, 2012 at 09:07 PM Author Report #456213 Posted May 16, 2012 at 09:07 PM Obrigado pelas dicas, penso que já está a funcionar, faltava fazer a chamada do sub e adicionar as variáveis necessarias nesse mesmo sub. Cumps, ASimões
passarito Posted June 6, 2012 at 08:37 AM Report #460796 Posted June 6, 2012 at 08:37 AM Se colocares essas SUB's dentro da SUB principal, não necessitas de voltar a declarar as variaveis. 😉
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now