Página 1 de 1
Controle de Ponto
Enviado: 09 Mai 2021 às 20:10
por lauriene1987
Tenho uma planilha de controle de ponto e estou tentando automatiza-la.
Criei uma macro que quando clico no botão "cadastrar" na aba "cadastro de hora" automaticamente ele copia todos os dados selecionados nas caixas de texto e copia para a aba "controle de horas" (para o fim da planilha).
Mas o macro dá erro e copia todos os funcionários e não apenas os selecionados. Estou quebrando a cabeça pra ver se descubro onde está o erro mas não entendo tanto de VBA, será que alguém poderia me ajudar a arrumar este erro?
Re: Controle de Ponto
Enviado: 10 Mai 2021 às 08:07
por osvaldomp
#
Experimente:
Código: Selecionar todosSub cadV2()
Dim LR As Long
Application.ScreenUpdating = False
With ActiveSheet
LR = .Cells(Rows.Count, 1).End(3).Row
On Error Resume Next
.ShowAllData
On Error GoTo 0
.[A7:G7].AutoFilter 1, "VERDADEIRO"
.Range("B8:G" & LR).Copy
Sheets("Controle de Horas").Cells(Rows.Count, 1).End(3)(2).PasteSpecial xlValues
.ShowAllData
End With
End Sub
Re: Controle de Ponto
Enviado: 10 Mai 2021 às 16:04
por lauriene1987
Muito obrigada, agora ta funcionando perfeitamente.
O que acontece também (não sei se é possivel, mas pelo q eu sei tudo é possível no excel kkk) é que nem sempre é a mesma pessoa que alimenta a planilha. Então eu queria criar mais dois botões na aba "cadastro de horas". Um pra fazer essa mesma função, só com o horário de entrada e outro que coloque só o horário de saída que está em branco. Não sei se deu pra entender muito bem. Se alguém puder me salvar nessa também ^^
Re: Controle de Ponto
Enviado: 10 Mai 2021 às 16:31
por osvaldomp
lauriene1987 escreveu: ↑10 Mai 2021 às 16:04
... e outro que coloque só o horário de saída que está em branco.
Você quer que o código coloque o horário de saída na mesma linha em que já estará lançado o horário de entrada para certo funcionário/mês/dia na planilha
Controle de Horas ou quer criar uma nova linha no final dos dados ?
Re: Controle de Ponto
Enviado: 10 Mai 2021 às 18:35
por lauriene1987
Primeira opção: "Você quer que o código coloque o horário de saída na mesma linha em que já estará lançado o horário de entrada para certo funcionário/mês/dia na planilha"
Re: Controle de Ponto
Enviado: 10 Mai 2021 às 20:21
por osvaldomp
Código: Selecionar todosSub CadastraEntrada()
Dim LR As Long
Application.ScreenUpdating = False
With ActiveSheet
LR = .Cells(Rows.Count, 1).End(3).Row
On Error Resume Next
.ShowAllData
On Error GoTo 0
.[A7:G7].AutoFilter 1, "VERDADEIRO"
.Range("B8:E" & LR).Copy
Sheets("Controle de Horas").Cells(Rows.Count, 1).End(3)(2).PasteSpecial xlValues
.ShowAllData
End With
End Sub
Código: Selecionar todosSub CadastraSaída()
Dim LRo As Long, LRd As Long, s As Range, r As Long
Application.ScreenUpdating = False
LRd = Sheets("Controle de Horas").Cells(Rows.Count, 2).End(3).Row
With ActiveSheet
LRo = .Cells(Rows.Count, 1).End(3).Row
On Error Resume Next
.ShowAllData
On Error GoTo 0
.[A7:G7].AutoFilter 1, "VERDADEIRO"
For Each s In .Range("C8:C" & LRo).SpecialCells(12)
r = Evaluate("MATCH(1,(C" & s.Row & "='Controle de Horas'!B2:B" & LRd & ")*(B2='Controle de Horas'!C2:C" & LRd & ")*(B3='Controle de Horas'!D2:D" & LRd & "),0)+1")
Sheets("Controle de Horas").Cells(r, 6) = .[B5]
Next s
.ShowAllData
End With
End Sub