Criar um ID/número de série automático

Olá,

Estou tentando criar uma planilha de ordem de serviço automatizada, e estou com um pouco de dificuldade pois passou um pouco do meu nivel de conhecimento pois nunca havia mexido com macro e VBA antes, apesar de já saber um pouco de programação.

Uma das principais coisas que eu precisava automatizar, eu não consegui achar muita coisa útil nas minhas pesquisas. No cabeçalho da planilha, eu vou ter um código do serviço como se fosse um número de série daquela ordem em específico. Ele informa o número do serviço naquele ano, e o ano em si, desta forma: 001297/2020

Eu gostaria de saber se existe alguma forma de automatizar esse número de série/ID, para alterar sozinho. Eu já estou trabalhando no cadastro dos clientes, estou pesquisando sobre salvamento automático de cada cliente/ordem do serviço dele, etc pro bd… Mas o número de serie estou tendo dificuldades de encontrar sobre, nas minhas pesquisas me ensinam o básico de como continuar números simples (1,2,3,4,5), mas não números com formatos específicos etc…

Se alguém souber alguma dica do que eu poderia fazer nesse caso agradeço.

Bom dia @poliv
Vai depender de como você vai chamar esta ação, não consegui entender muito bem quando isto seria chamado.

Apos qual etapa o numero deve ser mudado?

Então, esqueci de comentar isso, a principio pensei em criar um botão ao qual eu atribuiria o macro, depois pensei na possibilidade que atualizasse toda vez que eu abrisse a planilha, essa planilha no caso, é a planilha base que uso para criar os novos orçamentos/ordens de serviços. Eu preferiria a segunda opção, mas me conformaria com a primeira caso não fosse possível.

Para a primeira opção, é fácil de se resolver, basicamente você ia pegar a informação no campo em especifico, e o substituiria por um novo valor sequencial, o problema é que se você clicar la 20 vezes você vai pular 20 numerações.

Para a segunda opção o problema que você tem é que apos abrir a planilha e preencher ela com o novo numero, você deve salvar a planilha, se não fizer isto, você pode abrir a planilha 20 vezes e todas as vezes o numero sera igual. Se a pessoa abrir ela salvar e não utilizar na numeração basicamente você vai perder um numero de sequencia.

Ainda sim, você quer fazer desta forma?
Para todos os casos a solução é simples, so tem que pensar melhor nesta interação com o usuário.

Eu não teria problema em salva-las. Eu fiz alguns botões com macro nela para facilitar, e dois desses botões são Salvar Cópia, para salvar a SO do cliente em um arquivo separado, e o Salvar, justamente para salvar a planilha base.

OK, neste caso você vai ter que fazer o seguinte:
Cria um Range para pegar o valor na Cell onde estava o valor antigo:

Dim rng As Range
Set rng = Sheets("X").Range("Y")
'Substitua o valor de X pelo nome da sua aba
'Substitua o valor de Y pela posição onde se encontra a numeração

Agora precisa ser separado o valor sequencia da data, em quanto você converte os dados em String para Inteiro:

Dim contador As Integer
contador = CInt(Mid(rng.Value, 0, 6))
'Neste caso estou entendendo que a sua numeração nunca vai ultrapassar os 6 dígitos

Apos isto, você preenche a posição com o novo valor, acrescentando +1, convertendo em texto novamente, para acrescente com os caracteres de data e as “/”.

rng.Value = CStr(contador + 1) & “/” & CStr(Year(Now()))

Deve ter uma solução mais limpa que esta, mas acho que vai atender.
Código completo:

Dim rng As Range
Set rng = Sheets("X").Range("Y")
'Substitua o valor de X pelo nome da sua aba
'Substitua o valor de Y pela posicao onde se encontra a numeracao

Dim contador As Integer
contador = CInt(Mid(rng.Value, 0, 6))
'Neste caso estou entendendo que a sua numeracao nunca vai ultrapassar os 6 digitos


rng.Value = CStr(contador + 1) & "/" & Year(Now())