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

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

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,

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

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.

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.

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

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