Sou novo no fórum, e também no que diz respeito a programação, então vamos ao ponto...
Tenho uma planilha na qual eu tenho um relatório de obras, que preencho campos como horário de entrada e saída de vários funcionários, e uma planilha individual para cada funcionário citado no relatório de obras, onde essa planilha individual, é feito um relatório de horário de entrada e saída do funcionário x. Eu criei um código que é eficaz, que percorre todos os nomes e planilhas, preenchendo o horário conforme o dia citado no relatório de obras, porém, imagino que exista soluções melhores.
O que fazer para melhorar?
Código em abaixo.
Application.ScreenUpdating = False
Dim Data As Date
Dim W As Worksheet
Dim W2 As Worksheet
Dim Hora As Date
Dim Funcionarios As String
Dim Ent1 As Date
Dim Sai1 As Date
Dim Ent2 As Date
Dim Sai2 As Date
Dim He70 As Long
Dim He100 As Long
Dim Adn As Long
Dim Total As Long
Set W = Sheets("Plan1")
Set W2 = Sheets("Plan3")
W.Select
W.Range("J2").Select
Data = W.Range("J2")
Funcionarios = W2.Range("D2")
W.Range("c5").Select
Do While Funcionarios <> ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Ent1 = ActiveCell.Offset(0, 2).Value
Sai1 = ActiveCell.Offset(0, 3).Value
Ent2 = ActiveCell.Offset(0, 4).Value
Sai2 = ActiveCell.Offset(0, 5).Value
He70 = ActiveCell.Offset(0, 7).Value
He100 = ActiveCell.Offset(0, 8).Value
Adn = ActiveCell.Offset(0, 9).Value
Total = ActiveCell.Offset(0, 6).Value
W2.Select
W2.Range("C4").Select
Do While ActiveCell.Value <> Data
ActiveCell.Offset(1, 0).Select
Loop
If ActiveCell.Offset(0, 1).Value <= "" Then
ActiveCell.Offset(0, 1).Value = Ent1
ActiveCell.Offset(0, 2).Value = Sai1
ActiveCell.Offset(0, 3).Value = Ent2
ActiveCell.Offset(0, 4).Value = Sai2
ActiveCell.Offset(0, 5).Value = Total
ActiveCell.Offset(0, 6).Value = He70
ActiveCell.Offset(0, 7).Value = He100
ActiveCell.Offset(0, 8).Value = Adn
Else
MsgBox "Esse dia já foi preenchido"
End If
'--------------------------------------------------------------------------------------
W.Select
W.Range("J2").Select
Set W2 = Sheets("Plan2")
Data = W.Range("J2")
Funcionarios = W2.Range("D2")
W.Range("c5").Select
Do While Funcionarios <> ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Ent1 = ActiveCell.Offset(0, 2).Value
Sai1 = ActiveCell.Offset(0, 3).Value
Ent2 = ActiveCell.Offset(0, 4).Value
Sai2 = ActiveCell.Offset(0, 5).Value
He70 = ActiveCell.Offset(0, 7).Value
He100 = ActiveCell.Offset(0, 8).Value
Adn = ActiveCell.Offset(0, 9).Value
Total = ActiveCell.Offset(0, 6).Value
W2.Select
W2.Range("C4").Select
Do While ActiveCell.Value <> Data
ActiveCell.Offset(1, 0).Select
Loop
If ActiveCell.Offset(0, 1).Value <= "" Then
ActiveCell.Offset(0, 1).Value = Ent1
ActiveCell.Offset(0, 2).Value = Sai1
ActiveCell.Offset(0, 3).Value = Ent2
ActiveCell.Offset(0, 4).Value = Sai2
ActiveCell.Offset(0, 5).Value = Total
ActiveCell.Offset(0, 6).Value = He70
ActiveCell.Offset(0, 7).Value = He100
ActiveCell.Offset(0, 8).Value = Adn
Else
MsgBox "Esse dia já foi preenchido"
End If
Pergunta
Matheus Santos
Ola pessoal,
Sou novo no fórum, e também no que diz respeito a programação, então vamos ao ponto...
Tenho uma planilha na qual eu tenho um relatório de obras, que preencho campos como horário de entrada e saída de vários funcionários, e uma planilha individual para cada funcionário citado no relatório de obras, onde essa planilha individual, é feito um relatório de horário de entrada e saída do funcionário x. Eu criei um código que é eficaz, que percorre todos os nomes e planilhas, preenchendo o horário conforme o dia citado no relatório de obras, porém, imagino que exista soluções melhores.
O que fazer para melhorar?
Código em abaixo.
Application.ScreenUpdating = False Dim Data As Date Dim W As Worksheet Dim W2 As Worksheet Dim Hora As Date Dim Funcionarios As String Dim Ent1 As Date Dim Sai1 As Date Dim Ent2 As Date Dim Sai2 As Date Dim He70 As Long Dim He100 As Long Dim Adn As Long Dim Total As Long Set W = Sheets("Plan1") Set W2 = Sheets("Plan3") W.Select W.Range("J2").Select Data = W.Range("J2") Funcionarios = W2.Range("D2") W.Range("c5").Select Do While Funcionarios <> ActiveCell.Value ActiveCell.Offset(1, 0).Select Loop Ent1 = ActiveCell.Offset(0, 2).Value Sai1 = ActiveCell.Offset(0, 3).Value Ent2 = ActiveCell.Offset(0, 4).Value Sai2 = ActiveCell.Offset(0, 5).Value He70 = ActiveCell.Offset(0, 7).Value He100 = ActiveCell.Offset(0, 8).Value Adn = ActiveCell.Offset(0, 9).Value Total = ActiveCell.Offset(0, 6).Value W2.Select W2.Range("C4").Select Do While ActiveCell.Value <> Data ActiveCell.Offset(1, 0).Select Loop If ActiveCell.Offset(0, 1).Value <= "" Then ActiveCell.Offset(0, 1).Value = Ent1 ActiveCell.Offset(0, 2).Value = Sai1 ActiveCell.Offset(0, 3).Value = Ent2 ActiveCell.Offset(0, 4).Value = Sai2 ActiveCell.Offset(0, 5).Value = Total ActiveCell.Offset(0, 6).Value = He70 ActiveCell.Offset(0, 7).Value = He100 ActiveCell.Offset(0, 8).Value = Adn Else MsgBox "Esse dia já foi preenchido" End If '-------------------------------------------------------------------------------------- W.Select W.Range("J2").Select Set W2 = Sheets("Plan2") Data = W.Range("J2") Funcionarios = W2.Range("D2") W.Range("c5").Select Do While Funcionarios <> ActiveCell.Value ActiveCell.Offset(1, 0).Select Loop Ent1 = ActiveCell.Offset(0, 2).Value Sai1 = ActiveCell.Offset(0, 3).Value Ent2 = ActiveCell.Offset(0, 4).Value Sai2 = ActiveCell.Offset(0, 5).Value He70 = ActiveCell.Offset(0, 7).Value He100 = ActiveCell.Offset(0, 8).Value Adn = ActiveCell.Offset(0, 9).Value Total = ActiveCell.Offset(0, 6).Value W2.Select W2.Range("C4").Select Do While ActiveCell.Value <> Data ActiveCell.Offset(1, 0).Select Loop If ActiveCell.Offset(0, 1).Value <= "" Then ActiveCell.Offset(0, 1).Value = Ent1 ActiveCell.Offset(0, 2).Value = Sai1 ActiveCell.Offset(0, 3).Value = Ent2 ActiveCell.Offset(0, 4).Value = Sai2 ActiveCell.Offset(0, 5).Value = Total ActiveCell.Offset(0, 6).Value = He70 ActiveCell.Offset(0, 7).Value = He100 ActiveCell.Offset(0, 8).Value = Adn Else MsgBox "Esse dia já foi preenchido" End If
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.