none
Código executa do módulo mas não executa do botão? RRS feed

  • Pergunta

  • Quando executo o código a seguir direto do módulo não dá erro.

    Mas quando executo a partir de um botão no formulário dá o erro 91, variável não definida.

    Gostaria que o código fosse alterado para ser colocado em um módulo e chamado pelo evento click do botão no formulário.

        Dim frm As UserForm
        
        For i = 1 To ThisWorkbook.VBProject.VBComponents.Count
            If Left(ThisWorkbook.VBProject.VBComponents(i).Name, 3) = "frm" Then
                Set frm = ThisWorkbook.VBProject.VBComponents(i).Designer
                frm.Picture = LoadPicture(ThisWorkbook.Path & "\" & "fundoVermelho.jpg")
                frm.PictureSizeMode = fmPictureSizeModeStretch
            End If
            
            
        Next i

    quinta-feira, 28 de agosto de 2014 02:42

Respostas

  • Anderson, bom dia!

    Esse código só roda nos objetos que não estão sendo executados... ou seja, quando você roda o código ele executa nos forms fechados, nos forms abertos que estão sendo executados o programa não consegue alterar as propriedades do designer.

    Fiz uma alteração no código pra que, se o form estiver ativado, ele alterar a propriedade em runtime.... porém isso é só durante a execução, ele continuará da mesma forma que estava antes de executar.

    No Click do botão você faz prcAlterarFundo Me.Name

    Sub prcAlterarFundo(NomeFormAtivo As String)
        
        Dim frm As UserForm
        
        For i = 1 To ThisWorkbook.VBProject.VBComponents.Count
            
            If Left(ThisWorkbook.VBProject.VBComponents(i).Name, 3) = "frm" And ThisWorkbook.VBProject.VBComponents(i).Name <> NomeFormAtivo Then
                           
                Set frm = ThisWorkbook.VBProject.VBComponents(i).Designer
                frm.Picture = LoadPicture(ThisWorkbook.Path & "\" & "fundoVermelho.jpg")
                frm.PictureSizeMode = fmPictureSizeModeStretch
                
            End If
            
            
            If ThisWorkbook.VBProject.VBComponents(i).Name = NomeFormAtivo Then
                
                Dim frmAtivo As UserForm
                For j = 0 To UserForms.Count - 1
                    If UserForms(j).Name = NomeFormAtivo Then
                        Set frmAtivo = UserForms(j)
                        frmAtivo.Picture = LoadPicture(ThisWorkbook.Path & "\" & "fundoVermelho.jpg")
                        frmAtivo.PictureSizeMode = fmPictureSizeModeStretch
                        Exit For
                    End If
                Next j
                
            End If
                    
        Next i
        
    End Sub


    Natan



    quinta-feira, 28 de agosto de 2014 13:57

Todas as Respostas

  • Anderson, bom dia!

    Esse código só roda nos objetos que não estão sendo executados... ou seja, quando você roda o código ele executa nos forms fechados, nos forms abertos que estão sendo executados o programa não consegue alterar as propriedades do designer.

    Fiz uma alteração no código pra que, se o form estiver ativado, ele alterar a propriedade em runtime.... porém isso é só durante a execução, ele continuará da mesma forma que estava antes de executar.

    No Click do botão você faz prcAlterarFundo Me.Name

    Sub prcAlterarFundo(NomeFormAtivo As String)
        
        Dim frm As UserForm
        
        For i = 1 To ThisWorkbook.VBProject.VBComponents.Count
            
            If Left(ThisWorkbook.VBProject.VBComponents(i).Name, 3) = "frm" And ThisWorkbook.VBProject.VBComponents(i).Name <> NomeFormAtivo Then
                           
                Set frm = ThisWorkbook.VBProject.VBComponents(i).Designer
                frm.Picture = LoadPicture(ThisWorkbook.Path & "\" & "fundoVermelho.jpg")
                frm.PictureSizeMode = fmPictureSizeModeStretch
                
            End If
            
            
            If ThisWorkbook.VBProject.VBComponents(i).Name = NomeFormAtivo Then
                
                Dim frmAtivo As UserForm
                For j = 0 To UserForms.Count - 1
                    If UserForms(j).Name = NomeFormAtivo Then
                        Set frmAtivo = UserForms(j)
                        frmAtivo.Picture = LoadPicture(ThisWorkbook.Path & "\" & "fundoVermelho.jpg")
                        frmAtivo.PictureSizeMode = fmPictureSizeModeStretch
                        Exit For
                    End If
                Next j
                
            End If
                    
        Next i
        
    End Sub


    Natan



    quinta-feira, 28 de agosto de 2014 13:57