Pergunte aqui
0

Como duplicar "campo de data ou hora ou texto" em uma "célula"?

perguntadas 2015-11-18 19:12:59 +0100

esta mensagem está marcada como wiki comunitário

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

Entrei em modo design, usando a barra de controle de formulários e inseri um Campo de Data, ativei a opção Suspensa na caixa de Controle para poder escolher a data através do calendário. Gostaria agora de saber como após escolher a data preencher automaticamente uma célula.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

2 Respostas

0

respondidas 2015-11-29 16:37:07 +0100

imagem do gravatar de Grafeno

Olá,

O controle de "Campo de Data" não se vincula diretamente a um célula. No caso, é preciso atribuir uma macro ao evento "Texto modificado" do controle.


  1. Vá em Ferramentas > Macros > Organizar macros > LibreOffice Basic...
  2. Em "Macro de" selecione o seu arquivo e clique no botão "Novo"
  3. Dê "Ok" e será criado um módulo.
  4. Copie a macro abaixo e cole na janela da IDE.

.

Sub TextoModificado( oEvento )
Dim oCampoData As Object, oDoc As Object
Dim oPlan As Object, oCel As Object
Dim sData As String

    ' Obter o Campo de Data 
    oCampoData = oEvento.Source.Model
    ' Obter a Célula A1
    oDoc = oCampoData.Parent.Parent.Parent
    oPlan = oDoc.Sheets.getByName("Planilha1")
    oCel = oPlan.getCellRangeByName("A1")

    ' Pegar a data selecionada no controle
    With oCampoData.Date
    sData = .Day & "/" & .Month & "/" & .Year 
    End With

    ' Inserir a data como string(texto) na célula
    oCel.String = sData
End Sub


Para atribuir a macro ao evento "Texto modificado" do controle:

  1. No Modo Design clique com botão direito no controle
  2. Escolha "Controle..."
  3. Na janela "Prorpriedades" clique na aba "Eventos" e no botão com três pontinhos (...) na frente de "Texto Modificado"
  4. Clique em "Macro" na nova janela
  5. Em "Biblioteca" navegue no seu arquivo até o nome do Módulo criado. Dê um clique
  6. Em "Nome da Macro" escolha a macro colada e dê "Ok" e depois "Ok".
  7. Feche a janela "Propriedades" e saia do Modo Design

Descrição da imagem


Acabou ficando um pouco extenso, mas espero que ajude.

Atte,
Grafeno

editar assinalar como ofensivo Excluir Link mais

Comentários

Ola, boa tarde. Usei o código em cima e funciona uma parte e outra parte não funciona. Quando selecciono a data ou "hoje", está tudo certo. O problema é quando quero limpar o campo ou selecionar "nenhum". Dá erro dizendo que: "sData = .Day & "/" & .Month & "/" & .Year -> Variável de objeto não definida."

Alguém consegue ajudar?

imagem do gravatar de Carlos SequeiraCarlos Sequeira ( 2019-11-19 14:12:36 +0100 )editar
0

respondidas 2019-11-25 12:57:41 +0100

A macro do @Grafeno alterada: Ola Carlos, encontrei a solução no livro de Cleuton Sampaio ( Criando Macros no BrOffice Calc, pg.104 - Ed. Brasport / 2010 )

Sub TextoModificado( oEvento )
Dim oCampoData As Object, oDoc As Object
Dim oPlan As Object, oCel As Object
Dim sData As String

   ' Obter o Campo de Data 
    oCampoData = oEvento.Source.Model
    ' Obter a Célula A1
    oDoc = oCampoData.Parent.Parent.Parent
    oPlan = oDoc.Sheets.getByName("Sheet1")
    oCel = oPlan.getCellRangeByName("A1")

    ' Pegar a data selecionada no controle
    With oCampoData.Date

On Error Resume Next   'acrescentei esta linha ( O Basic desliga a tratamento de erro, se der erro, não saberá, o processamento continua )

    sData = .Day & "/" & .Month & "/" & .Year 
    End With

    ' Inserir a data como string(texto) na célula
    oCel.String = sData

End Sub
editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2015-11-18 19:12:59 +0100

Lidas: 302 vezes

Última atualização: Nov 25