Ir para conteúdo
Fórum Script Brasil
  • 0

Erro no combobox.enabled


Fabiooo

Pergunta

Eu coloquei um botão na minha planilha que ao ser clicado, ele desabilita todos os controles da planilha e envia por e-mail para uma certa pessoa.

Porém ao clicar no botão, o vba apresenta o seguinte erro: "Erro de compilação: Método ou membro de dados não encontrado". Esse erro aparece na linha .ComboBox1.Enabled = False do meu código.

Não entendo o porquê deste erro. Eu já havia utilizado esse mesmo comando para copiar as planilhas e desabilitar alguns botôes das mesmas nesse mesmo programa e não apresentaram erro algum.

abaixo segue o código da rotina que apresentou erro:

Private Sub EnviaEmail_Click()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    If ws.name <> "Lista de Revitalizações" Then
    If ws.name <> "Plan1" Then
        With ws
            .ComboBox1.Enabled = False
            .ComboBox2.Enabled = False
            .ComboBox3.Enabled = False
            .ComboBox4.Enabled = False
            .ComboBox5.Enabled = False
            .ComboBox6.Enabled = False
            '.BotaoSalvar.Enabled = False
            .TextBox1.Enabled = False
        End With
    End If
    End If
Next ws

ActiveSheet.Protect Password:="XXXXX", DrawingObjects:=True, Contents:=True, Scenarios:=True
ThisWorkbook.SaveAs

Dim olApp                        As Outlook.Application
Dim olMailMessage                As Outlook.MailItem
Dim olRecipient                  As Outlook.Recipient  
Dim blnKnownRecipient            As Boolean          
Dim blnNewOutlookApp             As Boolean         

blnNewOutlookApp = False

Const ERR_APP_NOTRUNNING As Long = 429

On Error Resume Next

Set olApp = GetObject(, "Outlook.Application")

If Err = ERR_APP_NOTRUNNING Then
    Set olApp = New Outlook.Application
    blnNewOutlookApp = True
End If

Set olMailMessage = olApp.CreateItem(olMailItem)
    With olMailMessage
        .To = "Fabio Ferreira Gomes Dias"
        .CC = ""
        Set olRecipient = .Recipients.Add(ActiveProject.Resources(aAssign.ResourceText6).EMailAddress)
        blnKnownRecipient = olRecipient.Resolve
        .Subject = "Teste"
        .HTMLBody = "Teste"
        .Attachments.Add ThisWorkbook.FullName
        Set olMailMessage = Nothing
        'Application.DisplayAlerts = False
        .Send
    End With
If blnNewOutlookApp = True Then
    Set olApp = Nothing
End If
End Sub

Desde já agradeço mais essa ajuda.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

os combobox não tão num formulario, e sim nas proprias planilhas, certo??

ai acho q você não consegue acessar assim no objeto worksheet mesmo.

você pudia fazer assim pra acessar:

ws.Shapes.Item("ComboBox1").Propriedade = valor
entretanto, um combobox no formulario não é entendido como combobox pelo vba e sim como shape. e o objeto shape não tem a propriedade enabled. ai você pudia corrigir isso com uma gambiarra tipo assim:
ws.Shapes.Item("ComboBox1").Select
Selection.Enabled = False[/code]

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0

Sim, os comboboxes estão diretamente na planilha.

Tentei as duas formas de resolver o problema que você me sugeriu, porém em nenhuma delas eu obtive êxito. É muito estranho, pois eu já havia utilizado esse comando num outro botão na mesma planilha e da mesma forma, a subrotina deste botão está diretamente acima da rotina que apresentou erro. Vou colá-la aqui para melhor visualização.

Private Sub BotaoSalvar_Click()
Dim ws As Worksheet
Dim ExistePlan As Boolean

'If me.name
ExistePlan = False

For Each ws In ThisWorkbook.Worksheets
    If ws.name = "Revitalização " & Identificacao Then
        ExistePlan = True
    End If
Next ws
    
If ExistePlan = False Then
    Sheets("Lista de Revitalizações").Select
    Sheets("Lista de Revitalizações").Copy After:=Sheets(Rev)
    Sheets("Lista de Revitalizações (2)").Select
    Sheets("Lista de Revitalizações (2)").name = "Revitalização " & Identificacao

    With Sheets("Revitalização " & Identificacao)
        .ComboBox1.Enabled = False
        .ComboBox2.Enabled = False
        .BotaoSalvar.Enabled = False
    End With
    
    Controle_atualizacao ("Revitalização " & Identificacao)
    Rev = Rev + 1
Else
    Call MsgBox("Ocorreu um erro, verifique se a planilha já existe", vbCritical)
End If
    
Call LimparPlanilha
    
End Sub

Este botão salvar copia a planilha para uma nova e desabilita certos botões de controle, além de limpar a planilha base para o usuário poder inserir uma nova revitalização.

A rotina Controle_atualizacao simplesmente preenche as comboboxes da planilha com o comando .additem. A rotina LimpaPlanilha reseta a planilha inicial para prepará-la para uma nova revitalização. Rev é uma variável pública.

Não consigo ver diferença nos dois botões que justifique o erro só em um deles. O botão EnviaEmail dá erro, enquanto que o botão BotaoSalvar não gera erro algum. Poderiam me ajudar a identificar qual a causa do erro? o que eu fiz na rotina de um botão para funcionar que eu não fiz no outro?

Editado por Fabiooo
Link para o comentário
Compartilhar em outros sites

  • 0

estranho, pra mim esse codigo ai do BotaoSalvar nunca funcionou assim.

já aquele codigo do Select q eu passei funciona sem problemas aqui (a não ser q você use em momentos em q você não possa movimentar o cursor pra fazer selecao ou coisa assim), q problema você teve com ele??

Link para o comentário
Compartilhar em outros sites

  • 0

Com o seu método, apareceu erro na linha:

Selection.Enabled = False

O erro encontrado foi o de tempo de execução '438' e diz que o objeto ou método não aceita esta propriedade.

Me certifiquei de desbloquear todas as planilhas antes de tentar modificar a propriedade dos comboboxes com o comando ws.Unprotect "SENHA" imediatamente antes da rotina que seleciona os comboboxes e altera suas propriedades. É importante desabilitar os botões das planilhas para que o usuário envie o e-mail, confiante de que o receptor não consiga alterar os dados repassados.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...