Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
Por NelyRobson
#18444
Bom dia

Professor GURU,

Sou um principiante em VBA com macro nos meus conhecimentos que são pouco foram todos pela internet no youtube e outros sites.

Estou fazendo uma planilha de contas a pagar aqui na empresa que eu trabalho e estou querendo fazer uma situação automática para quando for digitado nas células exemplo H, I,J, I e L a J -> fica a data de registro que automática do sistema, a célula I -> eu lanço a data de Vencimento a célula J é a data da Confirmação do Pagamento e a célula seguinte que é a L -> é a SITUAÇÃO ou STATOS.

Como seria o resultados deste macro é o seguinte:

Exemplo: " H <= I " Resultado é --> NO PRAZO
" H > I " Resultado é --> VENCIDO
" L > "" " Resultado é --> PAGO

Tudo isso é a traveis de um BOTÃO Adicionar, como este macro do botão.

'PROCEDIMENTO PARA ADICIONAR DADOS AO BD
Public Sub Adicionar()
Dim linha As Integer
Dim conte As Integer
Application.ScreenUpdating = False
linha = 4
conte = 1

If shtPainel.Range("A6") = 1 Then
If shtPainel.Range("Receita") = "" Or shtPainel.Range("Valor") = "" Then
MsgBox "Os campos RECEITA e VALOR São Obrigatórios!", vbCritical, "CAMPOS VAZIOS"
Exit Sub
End If
Else
If shtPainel.Range("CategoriaDespesa") = "" Or shtPainel.Range("Despesa") = "" Or shtPainel.Range("Valor") = "" Then
MsgBox "Os campos CATEGORIA DA DESPESA, DESPESA e VALOR São Obrigatórios!", vbCritical, "CAMPOS VAZIOS"
Exit Sub
End If
End If

Do Until shtDados.Cells(linha, "A") = ""
linha = linha + 1
conte = conte + 1
Loop
shtDados.Cells(linha, "A") = conte
shtDados.Cells(linha, "B") = shtPainel.Range("CategoriaDespesa").Value

If shtPainel.Range("Receita") = "" Then
shtDados.Cells(linha, "C") = shtPainel.Range("Despesa").Value
shtDados.Cells(linha, "D") = "Despesa"
Else
shtDados.Cells(linha, "C") = shtPainel.Range("Receita").Value
shtDados.Cells(linha, "D") = "Receita"
End If

shtDados.Cells(linha, "E") = shtPainel.Range("Valor").Value

If Format(Now, "dd/mm/yyyy") <= shtDados.Cells(linha, "I") Then ' Dt Registro <= Dt Venc. = NO PRAZO
shtDados.Cells(linha, "I") = shtPainel.Range("DtVenc") & " VENCIDO" '.Value
MsgBox "Vencido"
Else
shtDados.Cells(linha, "I") = shtPainel.Range("DtVenc") & " NO PRAZO" '.Value
MsgBox "No Prazo"
End If

shtDados.Cells(linha, "I") = shtPainel.Range("DtVenc").Value

shtDados.Cells(linha, "J") = shtPainel.Range("DtPag").Value

If shtPainel.Range("Mes") = "" Then
shtDados.Cells(linha, "F") = MonthName(Month(Now))
Else
shtDados.Cells(linha, "F") = LCase(shtPainel.Range("Mes").Value)
End If

If shtPainel.Range("Ano") = "" Then
shtDados.Cells(linha, "G") = Year(Now)
Else
shtDados.Cells(linha, "G") = shtPainel.Range("Ano").Value
End If

shtDados.Cells(linha, "H") = Format(Now, "dd/mm/yyyy")
shtDados.Cells(linha, "L") = shtPainel.Range("Obs").Value '(LINHA, "I")

'If shtDados.Cells(linha, "D") = "Despesa" Then
'shtDados.Cells(linha, "E") = shtPainel.Range("Valor").Value * -1
'Else
'shtDados.Cells(linha, "E") = shtPainel.Range("Valor").Value
'End If

MsgBox "Lançamento Completado com Sucesso", vbInformation, "LANÇAMENTOS"
Application.ThisWorkbook.Save
LimparCampos
Application.ScreenUpdating = True
End Sub

Espero que der para os colegas entenda isso que eu quero fazer.
Avatar do usuário
Por wesleyribeiro123
Posts Avatar
#18462
Caro NelyRobson,

Seria ideal que postasse um exemplo desta planilha pra gente...
Coloque alguns valores fictícios e poste aqui para tentar lhe ajudar...
Por NelyRobson
#18470
Boa tarde

Caros colegas deste site do Guru do Excel, está planilha eu baixe da net.

segue ela em anexo, grato pela ajuda dos colegas e espero ajuda de quem puder me ajudar neste caso citado acima.
Você não está autorizado a ver ou baixar esse anexo.
Por NelyRobson
#18474
Caros Colegas na primeira tela ela tem os campos para que seja lançados os dados necessários.

O problema está nas datas a do vencimento, se vocês testarem lançar este exemplo uma data menor que a do dia em vigência.
O resultado teria de ser o seguinte na PLANILHA de DADOS COLUNA SITUAÇÃO ficaria VENCIDO
Depois lance uma data igual ao do dia. O resultado teria de ser o seguinte na PLANILHA de DADOS COLUNA SITUAÇÃO ficaria NO PRAZO
O outro resultado é quando a COLUNA PAGAMENTO estiver com dados e não for mais limpo o campo na SITUAÇÃO ficaria PAGO.
Avatar do usuário
Por DJunqueira
Avatar
#18475
Não uso o compactador .rar, prefiro usar o compactador nativo do Windows .zip.
Para usar o zip basta clicar no arquivo com o botão direito e selecionar Enviar para / Pasta compactada.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord