Página 1 de 1

Erro De Compilação: Procedimento Muito Grande

Enviado: 29 Fev 2016 às 14:55
por glaubermoraes93
Fala Galera.

Preciso fazer uma aplicação em VBA Ferrado.

Tenho um form onde será informado a quantidade de módulos e a quantidade de switchs, para cada switch eu posso ter 4 opções que comecem com 0 e 4 opções que comecem com1 por exemplo.

24portas 32 portas 40 portas e 48 portas (Começam com 0)

24portas 32 portas 40 portas e 48 portas (Começam com 1)

e será atribuido para cada switch 1 id especifico no seu textbox.

Ai sim conforme for coletado os dados irei criar uma aba chamada Plano de Face, onde irei copiar a estrutura dos switchs da aba Base e cola na plano de face, conforme os dados informados pelo usuário.

Lembrando que poderei ter até 15 switchs.

Valeuuu

Re: Erro De Compilação: Procedimento Muito Grande

Enviado: 29 Fev 2016 às 17:04
por alexandrevba
Boa tarde!!

Onde afinal está sua dúvida, oque e qual parte precisa de ajuda? :?:


Att

Erro De Compilação: Procedimento Muito Grande

Enviado: 01 Mar 2016 às 08:44
por glaubermoraes93
Campeão, primeiramente obrigado por responder.

Então postei o projeto em anexo, toda vez que executo da erro de compilação, código muito grande.

há o que fazer? ou se enxergar um jeito de diminuir o código.

Re: Erro De Compilação: Procedimento Muito Grande

Enviado: 01 Mar 2016 às 08:50
por alexandrevba
Bom dia!!

Nestes casos uma boa pratica seria dividir os procedimentos em partes.
Código: Selecionar todos
Sub CodigoPrincial()

      Call SubA
      Call SubB
      Call SubC

End Sub
Código: Selecionar todos
Sub SubA()
    MsgBox "Eu faço a parte A"
End Sub
Código: Selecionar todos
Sub SubB()
    MsgBox "Eu faço a parte B"
End Sub
Código: Selecionar todos
Sub SubC()
    MsgBox "Eu faço a parte C"
End Sub
Att

Erro De Compilação: Procedimento Muito Grande

Enviado: 01 Mar 2016 às 08:57
por glaubermoraes93
eu dividindo por partes como faria para essa funcionalidade ocorrer no botão?

Re: Erro De Compilação: Procedimento Muito Grande

Enviado: 01 Mar 2016 às 12:17
por Reinaldo
Em alguns sites e dado como limite de caractere por modulo, algo em torno de 64000 caracteres, aproximadamente 1200 linhas (não sei se os comentários e linhas em Branco estão incluídos, creio que não) de código.
Assim se sua rotina for extrapolar essa limitação, a solução mais obvia e dividi-la em vários módulos.
Não há uma receita previa para essa atividade, tudo depende das funcionalidades/necessidades.
Outra possibilidade é rever suas rotinas e "enxuga-las".
Sem uma analise mais profunda segue algums exemplos:
A rotina "Initialize" do formulario: FormGerarSwitchs, pode ser +/- assim:
Código: Selecionar todos
Private Sub UserForm_Initialize()
Dim x as integer
contagem2 = 0
contagem3 = 0
For x = 1 To 15
    If x <= QtdeSwitchs Then
        Controls("frmSwitch" & x).Visible = True
        Controls("cbocomecado" & x).AddItem " 0 "
        Controls("cbocomecado" & x).AddItem " 1 "
    Else
        Controls("frmSwitch" & x).Visible = False
End If
Next
End Sub
O trecho do DADOS DO SWITCHCORE na rotina: btnGerarPlanoDeFace_Click
Código: Selecionar todos
'---------DADOS DO SWITCHCORE ----------------------------------------------------------------------------
If SwitchCoreSim = 1 Then
   For i = 1 To FormGerarPlanoDeFace!txtQtdeModulos.Text * 1
        Sheets("BASE").Range("B4:Z7").Copy Sheets("Plano de Face").Range("B1048576").End(xlUp).Offset(2, 0)
        Sheets("Plano de Face").Range("A1048576").End(xlUp).Offset(4, 0).Value = "MOD " & i
   Next
End If
Nessa mesma rotina, em DADOS DO SWITCH 1
Código: Selecionar todos
If frmSwitch1.Visible = True And frmSwitch2.Visible = False Then
    If opbp24switch1.Value = True Then
        If cboComecaDo1.Text = 0 Then
            Sheets("BASE").Range("B11:N14").Copy Sheets("Plano de Face").Range("B1048576").End(xlUp).Offset(2, 0)
            Sheets("Plano de Face").Range("A1048576").End(xlUp).Offset(5, 0).Value = txtIdSwitch1.Text
        Else
            Sheets("BASE").Range("B39:N42").Copy Sheets("Plano de Face").Range("B1048576").End(xlUp).Offset(1, 0)
            Sheets("Plano de Face").Range("A1048576").End(xlUp).Offset(1, 0).Value = txtIdSwitch1.Text
        End If
    Else.....

Re: Erro De Compilação: Procedimento Muito Grande

Enviado: 05 Dez 2016 às 15:34
por Lopes
Boa tarde amigos

Eu estou trabalhando em uma planilha no Excel com esse código:

Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("E2").Address Then
Sheets("Estoque").Cells(2, "D") = Sheets("Estoque").Cells(2, "E") + Sheets("Estoque").Cells(2, "D")
Sheets("Estoque").Cells(2, 5).ClearContents
Sheets("Estoque").Cells(2, 5).Select
End If
End Sub

Só que eu preciso usar esse código para 300 linhas no Excel e está relatando "procedimento muito grande"

alguém por acaso sabe de uma solução para esse caso?

att.
Lopes