none
Checkbox no excel: Alterar o Caption por macro RRS feed

  • Pergunta

  • Olá!!

    Estou fazendo um programa no excel 2010 para transformar um banco de dados em um formulário com a formatação adequada para ser impresso, trata-se de um formulário com várias questões onde cada questão tem seus respectivos itens (checkboxes).

    O checkbox é gerado um uma aba do excel atraves de uma macro e a descrição (caption) deve ser igual a um campo específico de outra aba. Está funcionando corretamente quando insiro o checkbox de "controle de formulário" ao invés de "controles ActiveX", porém o processamento fica MUITO mais lento e quando abro no excel 2007 a descricao do checkbox nao pula para a linha de baixo quando esta muito grande.

    Meu problema é que consigo inserir um checkbox de "controle ActiveX" por macro em uma planilha excel porém não consigo alterar seu "caption". Já tentei de muitas maneiras e não da certo. Alguem pode me ajudar, por favor?

    Segue o codigo que estou usando para inserir o checkbox.

    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
                    DisplayAsIcon:=False, Left:=6, Top:=15, Width:=108, Height:=19.5). _Select

    Obrigado!!!

    sexta-feira, 27 de dezembro de 2013 02:50

Respostas

  • Não tenho Excel 2007 aqui para testar.

    No entanto, certifique-se que a propriedade WordWrap da caixa de seleção (CheckBox) esteja atribuída em True. Pode ser que o código crie, no Excel 2007, com esse valor de propriedade em False. Em outras palavras, usar o código a seguir:

    Sub fnc()
      With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1" _
      , Link:=False _
      , DisplayAsIcon:=False _
      , Left:=6 _
      , Top:=15 _
      , Width:=108 _
      , Height:=19.5)
        .Object.Caption = "Benzadeus!"
        .WordWrap = True
      End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    segunda-feira, 30 de dezembro de 2013 13:14
    Moderador

Todas as Respostas

  • Sub fnc()
      With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1" _
      , Link:=False _
      , DisplayAsIcon:=False _
      , Left:=6 _
      , Top:=15 _
      , Width:=108 _
      , Height:=19.5)
        .Object.Caption = "Benzadeus!"
      End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sábado, 28 de dezembro de 2013 01:20
    Moderador
  • Olá Felipe,

    Te agradeço pela ajuda, agora funcionou!!!! havia pesquisado e tentado de várias formas, mas sem sucesso.

    Agora apareceu um outro problema, me parece que tem um limite de checkboxes do tipo "controles Active X" pois apareceu o problema abaixo após rodar corretamente por um tempo:

    "Erro em tempo de execução '-2147319765 (8002802b)':
    Erro de automação
    A biblioteca de objetos é inválida ou contém referências a definições de objetos que não puderam ser localizadas"

    Quando uso o checkbox "Controles de Formulário" o programa roda perfeitamente sem problemas.

    Sabe a causa?

    Desde já agradeço.
    domingo, 29 de dezembro de 2013 01:05
  • Não sei o porquê disso. Talvez haja um limite mesmo.

    Por que você não utiliza o outro tipo de controle, o "Controls de Formulário"? Não atende suas necessidades? Se não, por quê?


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    domingo, 29 de dezembro de 2013 12:44
    Moderador
  • Felipe,

    A alternativa é utilizar mesmo o checkbox de "controle de formulario", a única desvantagem é que no excel 2007, quando o caption é muito grande ele não divide em duas linhas. Sabe se há uma solução?

    No 2010 funciona bem.

    Att,

    Tulio

    domingo, 29 de dezembro de 2013 20:01
  • Não tenho Excel 2007 aqui para testar.

    No entanto, certifique-se que a propriedade WordWrap da caixa de seleção (CheckBox) esteja atribuída em True. Pode ser que o código crie, no Excel 2007, com esse valor de propriedade em False. Em outras palavras, usar o código a seguir:

    Sub fnc()
      With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1" _
      , Link:=False _
      , DisplayAsIcon:=False _
      , Left:=6 _
      , Top:=15 _
      , Width:=108 _
      , Height:=19.5)
        .Object.Caption = "Benzadeus!"
        .WordWrap = True
      End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    segunda-feira, 30 de dezembro de 2013 13:14
    Moderador