Notifications
Clear all

Código VBA para cadastrar data com formato mes e ano atual

5 Posts
2 Usuários
0 Reactions
737 Visualizações
(@mecenas)
Posts: 3
New Member
Topic starter
 

Boa noite, fiz uma Sub para cadastrar os dados em meu projeto,l porem estou com dificuldade no seguinte:

eu coloquei uma condição que se ("DataEsp") o campo data for deixado em branco, vai cadastrar a data atual dd/mm/yyyy, e nas colunas B e J eu preciso que fique o "Mes" atual e Ano "atual,
só que ao cadastrar, se eu preencher uma data fica normal, porém se deixar em branco fica com o formato : dezembro 1899 ( nesse caso deixei em branco e cadatrou data de hj) só que nas colunas b e J ficou: dezembro - 1899

segue o código.

Alguem pode ajudar?

'PROCEDIMENTO PARA ADICIONAR DADOS AO BD
Public Sub Adicionar()
Dim linha As Integer
Dim conte As Integer


If shtPainel.Range("Receita") = "" And shtPainel.Range("CategoriaDespesa") = "" Then Exit Sub

linha = 4
conte = 1

Do Until shtDados.Cells(linha, "A") = ""
linha = linha + 1
conte = conte + 1
Loop
shtDados.Cells(linha, "A") = conte

 'shtPainel.Range("DataEsp").Value = Format(Date, " dd/mm/yyyy")    
If shtPainel.Range("DataEsp").Value = "" Then
shtDados.Cells(linha, "B") = Format(Date, "dd/mm/yyyy")
shtDados.Cells(linha, "I") = Format(Date, "mm")
shtDados.Cells(linha, "J") = Format(Date, "yyyy")

Else
shtDados.Cells(linha, "B") = shtPainel.Range("DataEsp").Value

End If
If Range("OpAdd") = 1 Then
shtDados.Cells(linha, "D") = shtPainel.Range("Receita").Value
shtDados.Cells(linha, "E") = "Receita"
Else               'OU SEJA SE ("OpAdd")=2
shtDados.Cells(linha, "C") = shtPainel.Range("CategoriaDespesa").Value
shtDados.Cells(linha, "D") = shtPainel.Range("Despesa").Value
shtDados.Cells(linha, "E") = "Despesa"
End If

shtDados.Cells(linha, "F") = shtPainel.Range("EspecificoOp").Value
shtDados.Cells(linha, "G") = shtPainel.Range("Filial").Value
shtDados.Cells(linha, "H") = shtPainel.Range("Valor").Value

shtDados.Cells(linha, "I") = MonthName(Month(shtPainel.Range("DataEsp")))
shtDados.Cells(linha, "J") = Year(shtPainel.Range("DataEsp"))

shtDados.Cells(linha, "K") = Format(Date, "dd/mm/yyyy")
shtDados.Cells(linha, "L") = "Saldo"

If Range("OpAdd") = 1 Then
MsgBox "Receita adicionada com sucesso", vbOKOnly, "Receita"
Else
MsgBox "Despesa adicionada com sucesso", vbOKOnly, "Despesa"

End If
Application.ThisWorkbook.Save
Call LimparForm
End Sub
 
Postado : 25/05/2017 7:00 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

O seu problema é nas colunas 'B' e 'J' ou nas colunas 'J' e 'I' ?

No seu código, se "DataEsp" estiver vazio, então as duas primeiras linhas de comando abaixo vão inserir a data em 'J' e em 'I', porém há outras duas linhas de comando mais abaixo no seu código que vão sobrepor a data antes inserida.

estas inserem a data

shtDados.Cells(linha, "I") = Format(Date, "mm")
shtDados.Cells(linha, "J") = Format(Date, "yyyy")

e estas sobrepõem as datas com outros conteúdos

shtDados.Cells(linha, "I") = MonthName(Month(shtPainel.Range("DataEsp")))
shtDados.Cells(linha, "J") = Year(shtPainel.Range("DataEsp"))

Experimente desativar os comandos de baixo e testar, se não resolver disponibilize o seu arquivo com o código instalado.

Osvaldo

 
Postado : 25/05/2017 8:01 pm
(@mecenas)
Posts: 3
New Member
Topic starter
 

Então , o que eu quero é que se Coluna B do vazio no na célula de entrada, a vai cadastrar data atual na plan dados, e na J e I o mês e ano da coluna B
Quando não é vazio da certo, agora de for vazio da erro.
Não achei uma solução ainda

 
Postado : 26/05/2017 7:05 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Então , o que eu quero é que se Coluna B do vazio no na célula de entrada, a vai cadastrar data atual na plan dados, e na J e I o mês e ano da coluna B
Quando não é vazio da certo, agora de for vazio da erro.
Não achei uma solução ainda

:?: :?: :?:

Osvaldo

 
Postado : 26/05/2017 7:37 am
(@mecenas)
Posts: 3
New Member
Topic starter
 

Consegui Resolver, se alguém tiver a mesma duvida segue o código:

'PROCEDIMENTO PARA ADICIONAR DADOS AO BD
Public Sub Adicionar()
Dim linha As Integer
Dim conte As Integer


If shtPainel.Range("Receita") = "" And shtPainel.Range("CategoriaDespesa") = "" Then Exit Sub

linha = 4
conte = 1

Do Until shtDados.Cells(linha, "A") = ""
linha = linha + 1
conte = conte + 1
Loop
shtDados.Cells(linha, "A") = conte

 
If shtPainel.Range("DataEsp").Value = "" Then
shtPainel.Range("DataEsp") = Format(Date, "dd/mm/yyyy")
shtDados.Cells(linha, "B") = shtPainel.Range("DataEsp").Value     '<<<<<<<<essa linha resolveu o meu problema>>>>>>>>>>>>

 
Else
shtDados.Cells(linha, "B") = shtPainel.Range("DataEsp").Value

End If
If Range("OpAdd") = 1 Then
shtDados.Cells(linha, "D") = shtPainel.Range("Receita").Value
shtDados.Cells(linha, "E") = "Receita"
Else               'OU SEJA SE ("OpAdd")=2
shtDados.Cells(linha, "C") = shtPainel.Range("CategoriaDespesa").Value
shtDados.Cells(linha, "D") = shtPainel.Range("Despesa").Value
shtDados.Cells(linha, "E") = "Despesa"
End If

shtDados.Cells(linha, "F") = shtPainel.Range("EspecificoOp").Value
shtDados.Cells(linha, "G") = shtPainel.Range("Filial").Value
shtDados.Cells(linha, "H") = shtPainel.Range("Valor").Value
shtDados.Cells(linha, "I") = MonthName(Month(shtPainel.Range("DataEsp")))
shtDados.Cells(linha, "J") = Year(shtPainel.Range("DataEsp"))
shtDados.Cells(linha, "K") = Format(Date, "dd/mm/yyyy")
shtDados.Cells(linha, "L") = "Saldo"

If Range("OpAdd") = 1 Then
MsgBox "Receita adicionada com sucesso", vbOKOnly, "Receita"
Else
MsgBox "Despesa adicionada com sucesso", vbOKOnly, "Despesa"

End If
Application.ThisWorkbook.Save
Call LimparForm
End Sub

Public Sub GraficoMes()
shtPainel.Range("OpcaoGrafico") = 1
shtPainel.Shapes("LogoCentro").Visible = False

shtPainel.Shapes("TituloGrafFluxo").Visible = False
shtPainel.Shapes("GrafFluxo").Visible = False

shtPainel.Shapes("TituloGrafCA").Visible = False
shtPainel.Shapes("GrafCA").Visible = False

shtPainel.Shapes("TituloGrafA").Visible = False
shtPainel.Shapes("GrafA").Visible = False

shtPainel.Shapes("TituloGrafCM").Visible = False
shtPainel.Shapes("GrafCM").Visible = False

shtPainel.Shapes("TituloGrafM").Visible = True
shtPainel.Shapes("GrafM").Visible = True

shtPainel.Shapes("TituloGrafPrevisao").Visible = False
shtPainel.Shapes("GrafPrevisao").Visible = False

shtPainel.Shapes("BarraRolagem").Visible = True

End Sub
 
Postado : 26/05/2017 12:04 pm