Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

pedro_mexico

ajuda com formatacao de calendário e preencher automaticamente textbox com resultado

Recommended Posts

pedro_mexico

Boa Noite

Precisa de uma ajuda.

tenho um formulário para calcular os dias de férias.

tenho 1 textbox com a data de inicio ,ao lado botão para abrir calendário, depois textbox com o fim das ferias, ao lado botão para calendário. e por mim textbox que seria para dar o resultado dos dias de ferias gozados.

mas a primeira duvida é:

Primeiro:ao clicar em cima da data do calendário, ele preenche a textbox, mas a formatação fica mm/dd/yyyy.

o que eu queria era que ele colocasse por dd-mm-yyyy.

Tenho estes codigos inseridos no calendário.sao os unicos onde aparece a formatacao dos dias meses anos

"Option Explicit

Dim vDateSelectedVar As Date

Public Property Get SelectDate() As Date

SelectDate = vDateSelectedVar

End Property

Private Sub UserForm_Initialize()

'A data inicial é a atual:

lblHoje = "Hoje: " & Format(Date, "mm-dd-yyyy")

sb = Year(Date) * 12 + Month(Date)

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

'Impede que se dê Unload no formulário, caso contrário a linha que testa

'frm.Tag na linha seguinte do módulo mdlCalendário dará erro, pois o objeto

'deixará de existir. Ao invés de dar Unload, usa-se Hide para o objeto

'continuar a existir na memória.

If CloseMode = vbFormControlMenu Then

Cancel = True

Hide

End If

End Sub

Private Sub lblHoje_Click()

'Quando se clica no Label do dia atual, o calendário atualiza-se

'para o mês atual.

'O modo de cálculo do mês em questão é o número de meses.

'Como um ano possui 12 meses, o valor da ScrollBar é o número

'total de meses:

sb = Year(Date) * 12 + Month(Date)

End Sub

Private Sub sb_Change()

'Deve-se atualizar o calendário ao alterar a ScrollBar.

'O valor do calendário é uma divisão inteira (observe o símbolo \)

'de anos e o resto do valor por 12 como mês:

Atualizar DateSerial(sb \ 12, sb Mod 12, 1)

End Sub

Private Sub Atualizar(dt As Date)

'Rotina que atualiza todos os Label do calendário

Dim l As Long

Dim c As Long

Dim cInício As Long

Dim dtDia As Date

Dim ctrl As control

lblMêsAno = Format(dt, "mmmm yyyy")

For l = 1 To 6 'Linhas do calendário

For c = 1 To 7 'Colunas do calendário

Set ctrl = Controls("l" & l & "c" & c)

'O entendimento da linha abaixo é fundamental para entender como todos os

'labels foram povoados:

dtDia = DateSerial(Year(dt), Month(dt), (l - 1) * 7 + c - Weekday(dt) + 1)

ctrl.Caption = Format(Day(dtDia), "00")

ctrl.Tag = dtDia

'Dias de um mês diferente do mês visualizado ficarão na cor cinza claro:

If Month(dtDia) <> Month(dt) Then

ctrl.ForeColor = &H808080

Else

ctrl.ForeColor = &H0

End If

'Realçar dia atual presente, caso esteja visível no calendário:

If dtDia = Date Then

ctrl.ForeColor = &HFF&

End If

Next c

Next l

End Sub"

Segundo, era se é possível , depois de colocar a data na "textbox da data de fim das férias" e ao mudar de textbox para a "textbox do resultado" ele fazer a conta e dar automaticamente o resultado.

Aguardo uma ajuda, todas elas são bem-vindas

Edited by pedro_mexico

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.