Apresentação
Primeiramente, meus cumprimentos, prazer em participar do fórum!
As planilhas, inclusive na gravação de códigos VBA sempre foram desafios há anos em tarefas de escritório e esse fórum, até então desconhecido, me parece interessante e motivador para cumprir com as tarefas. Pena é que, infelizmente, o tempo é escasso para participar mais e o trabalho atual não me permite tempo para empreendê-las, tendo que recorrer a algumas das horas de folga. Trabalho no ramo financeiro e ultimamente faço, principalmente, atendimento a solicitações e controle de demandas.
Ainda não conheço regramentos e objetivos, então por ora sigo pelo bom senso e peço compreensão por um possível excesso.
1. Desafio
- Visto o trabalho, tratei de criar uma planilha para controle delas, onde os dados por demanda discorrem nas linhas, por enquanto a partir da linha 2;
- Além de uns dados de identificação, mantenho na coluna "A" a entrada da demanda com data, e na coluna "E" a data e hora da modificação das colunas F ou G. Na primeira, formatei nº da célula com "dd/mmm" para apresentação mais simples e na segunda, formatei o nº da célula com "ddd dd, hh:mm" para melhor detalhamento.
- Para a maior agilidade distinguem-se as situações de inserção das de modificação de dados nas células sensíveis; na primeira, simplesmente ao inserir os dados de células em branco, o código tratará de colocar automaticamente a informação "PENDENTE" na coluna F, que descreverá a situação de cada demanda.
1.1. Tratamento das datas automáticas de criação e modificação
- Dada a planilha AVALIAÇÕES, o seguinte código foi criado:
Sub worksheet_change(ByVal faixa As Range)
Dim dados As Range
Set dados = Range("E1:G1000")
If dados.Cells(faixa.Row, -3).Value = "" Then
If Not Intersect(faixa, dados) Is Nothing Then
Application.EnableEvents = False
dados.Cells(faixa.Row, -3).Value = Now
ActiveSheet.Unprotect
dados.Cells(faixa.Row, 2).Value = "PENDENTE"
Application.EnableEvents = True
End If
Else
If Not Intersect(faixa, dados) Is Nothing Then
Application.EnableEvents = False
ActiveSheet.Unprotect
dados.Cells(faixa.Row, 1).Value = Now
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=False
End If
End If
End Sub
Funcionou bem. Mas aí surgiu uma primeira necessidade: Ao modificar dados nas colunas sensíveis (F, G) é atualizada a data de modificação imposta pelo código (na coluna E); Porém, ao inserir o dado na coluna sensível F, a data não é atualizada na coluna E: como resolver?
A seguir, talvez compartilhe o 2º desafio, trabalhando com as proteções, classificações práticas para controle das demandas e salvamento de células; outros desafios são a interação das datas com a atual, o arquivamento das informações antigas e qualquer ideia que der pé. Desde já, agradeço a quem puder auxiliar na solução do problema, em realce.
Valeu? Até mais!
---
Rafael Carvalho
Santos, SP
Postado : 14/09/2013 9:01 am