Pergunte aqui
1

Como salvar o valor da combobox em uma célula usando macro?

perguntadas 2018-02-10 23:22:06 +0200

esta mensagem está marcada como wiki comunitário

Esta mensagem é um wiki. Qualquer pessoa com karma >75 é bem-vinda para a melhorar.

Como salvar o valor da combobox em uma célula usando macro? Obs.: A combobox está diretamente na planilha. Segue parte do que tentei.

Sub AtualizaCmbBox

Dim oCelula As Object, oCmbox As Object, oSheet As Object 

Set oSheet = ThisComponent.Sheets(0) 'Planilha em uso 

Set oCmbox=oSheet.Controls("cmbTabelas")  'Nome do combobox é cmbTabelas <-- ERRO AQUI

oCelula = oSheet.getCellByPosition(1,19) 'Selecionando célula 

oCelula.String = oCmbox.Value 'Salvando combobox na célula 

End sub
editar alterar tag assinalar como ofensivo fechar mesclar Excluir

3 Respostas

1

respondidas 2018-02-11 02:53:43 +0200

imagem do gravatar de Grafeno

Olá,

Se quiser realmente usar macro é preciso observar que mesmo que a caixa de combinação "pareça" estar diretamente na planilha, na verdade, ela estará dentro de um objeto Formulário (contêiner para controles e subformulários) que por sua vez estará dentro de um objeto DrawPage (contêiner para figuras, formas e formulários).

Teste o exemplo:

Sub AtualizaCmbBox

Dim oCelula As Object, oCmbox As Object, oSheet As Object 

   oSheet = ThisComponent.Sheets(0) 'Planilha em uso'

   oForm = oSheet.DrawPage.Forms(0) '1° Formulário'

   oCmbox = oForm.getByName("cmbTabelas") 'Nome do combobox é cmbTabelas'

   oCelula = oSheet.getCellByPosition(1,19) 'Selecionando célula'

   oCelula.String = oCmbox.CurrentValue 'Salvando combobox na célula'

End sub

Veja que a propriedade para recuperar o valor da caixa de combinação é CurrentValue.

Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

Obrigado por responder! Ainda não tinha entendido o "form". Estou engatinhando ainda. Só faltou declarar o "oForm As Object". Deu certinho.

imagem do gravatar de Raony SerrãoRaony Serrão ( 2018-02-11 16:16:51 +0200 )editar
0

respondidas 2018-02-14 23:27:49 +0200

imagem do gravatar de Jamilson

updated 2018-02-16 21:17:07 +0200

imagem do gravatar de Grafeno

Tenho este código só você altera as celulas que tem sua caixa de combinação

Sub lsAdiciona()
    Dim iTotalLinhas As Integer

    Worksheets("Banco").Activate
    Range("Banco!$A$1").Select

    iTotalLinhas = Cells(Rows.Count, 1).End(xlUp).Row + 1

    Cells(iTotalLinhas, 1).Value = Range("Banco!$M$1").Value + 1
    Cells(iTotalLinhas, 2).Value = UCase(Range("Formulario!E7").Value)  'setor
    Cells(iTotalLinhas, 3).Value = Range("Formulario!E9").Value         'Responsalve

    Worksheets("Formulario").Activate

    Range("Formulario!E7").Value = "" 'setor
    Range("Formulario!E9").Value = "" 'Responsalve


End Sub
editar assinalar como ofensivo Excluir Link mais

Comentários

Valeu pelas dicas! Vou usar esse código em outra parte.

imagem do gravatar de Raony SerrãoRaony Serrão ( 2018-02-16 16:28:09 +0200 )editar
0

respondidas 2018-02-11 00:36:50 +0200

Se a necessidade e ter o valor selecionada na combobox (validação) em outra célula, é mais fácil a celula ter referencia a celula de validação. Arquivo teste

Descrição da imagem

E ser for por Caixa de Listagem ou Caixa de Combinação, nos parametros delas tem a opção de vincular célula.

editar assinalar como ofensivo Excluir Link mais

Comentários

Obrigado pelo tempo gasto! Uma boa alternativa, mas não uso por ter que utilizar o valor em outra macro. Vocês são 10.

imagem do gravatar de Raony SerrãoRaony Serrão ( 2018-02-11 16:13:55 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2018-02-10 23:22:06 +0200

Lidas: 420 vezes

Última atualização: Feb 16 '18