AutoNumeração com V...
 
Notifications
Clear all

AutoNumeração com Validação

5 Posts
2 Usuários
0 Reactions
866 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,
Coluna A= Código
Coluna B = Equipamento

Tenho um Botão que procura a última linha vazia do intervalo A3:A1003.
Agora quero fazer um incremento (quando chegar na última linha vazia, se o Código anterior era 100, o próximo será 101) sem esquecer que não pode ser
repetido dentro do Intervalo (validação).
Depois quero o cursor na coluna B para o usuário preencher o Equipamento.

Grato,
Pedro

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2014 7:11 am
themrl16
(@themrl16)
Posts: 60
Trusted Member
 

Bom dia Pedro!

Uma pergunta: Seus códigos na coluna A, possuem apenas número ou envolve algum alfanumérico (Por exemplo, "COD001")? Pois caso hajam caracteres alfanuméricos ou especiais, será necessário revisar o código abaixo para adaptá-lo.
A Sub que criei analisa na coluna 1 (A) qual é a última linha que foi preenchida antes da linha de nº 1003. A partir daí, a variável grava sua referência numérica, e atribui na próxima célula o valor da célula anterior + 1:

Sub AutoNumeracao()
    Dim lLastRow As Long
    
    lLastRow = Cells(1003, 1).End(xlUp).Row  'Pega a última linha preenchida antes da linha 1003, coluna 1 (A)
    
    Range("A" & lLastRow + 1).Value = Range("A" & lLastRow).Value + 1 'Valor da próxima célula será o valor da célula anterior + 1
    Cells(lLastRow + 1, 2).Select 'Seleciona a última linha, coluna 2 (B)

End Sub

Abraços e bom fim de semana,

Murilo.

Leia as REGRAS
Utilize arquivos COMPACTADOS
PESQUISE
AGRADEÇA clicando na mãozinha ao lado da ferramenta citar.
Marque o tópico como [Resolvido], clicando no ao lado do botão citar.

Abraços,

Murilo L
------------
e-mail: [email protected]
skype: fareva_mlima

 
Postado : 29/03/2014 7:38 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Murilo,
Obrigado pela ajuda.

Como Não possui alfanumérico na Coluna A, tudo bem.

A função funciona quando a ordenação é pela Coluna A, pelo Código.

Dois problemas:
- Não funciona quando o usuário ordenar pela Coluna B, pois não reconhece todos os códigos existentes,
- Tá Aceitando código existente (não pode repetir).

Grato,
Pedro

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2014 9:02 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Acho que agora você complicou, a rotina que o colega postou faz exatamente o que você pediu:

Procura a última linha vazia do intervalo A3:A1003.
Euando chegar na última linha vazia, se o Código anterior era 100, o próximo será 101 - sem esquecer que não pode ser
repetido dentro do Intervalo (validação).
Depois quero o cursor na coluna B para o usuário preencher o Equipamento.

O mesmo ja adiantou que era somente para valores numericos na Voluna A, e você não disse nada sobre executar a rotina em relação aos dados na Coluna B.
Tambem fiquei em duvida quando diz "Ordenação" e não poder ter codigos repetidos ? Onde não poderá ter repetição, na Coluna A ou na Coluna B ?
Ordenção seria classificar em ordem crescente ?
Os Códigos na Coluna "A" são sequenciais ?
Supondo que os códigos na coluna A não são sequenciais e pula-se aalguns, ou seja 1,2 5, 15, 6, 11, 10
Diriámos que o proximo código não pode ser 11 pois já existe, então qual logica quer seguir ?
Agora supomos que o proximo código deveria ser o 16 que é o numero maior na sequencia então poderiamos estar utilizando a função máximo, ficando assim a rotina adaptada:

Sub AutoNumeracaoMaximo()
    Dim lLastRow As Long
    Dim sMaximo
    
    lLastRow = Cells(1003, 1).End(xlUp).Row  'Pega a última linha preenchida antes da linha 1003, coluna 1 (A)
    sMaximo = WorksheetFunction.Max(Range("A:A")) '(Função Máximo)= O numero Maior na Coluna
    
'    Range("A" & lLastRow + 1).Value = Range("A" & lLastRow).Value + 1 'Valor da próxima célula será o valor da célula anterior + 1
    Range("A" & lLastRow + 1).Value = sMaximo + 1 'Valor da próxima célula será o valor da célula anterior + 1
    
    Cells(lLastRow + 1, 2).Select 'Seleciona a última linha, coluna 2 (B)

End Sub

Acredito que ainda não é isto, então o ideal é detalhar melhor todas as possibilidades e se possivel anexar um modelo de como está e como quer que fique.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2014 10:15 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro,
Interpretação correta.
Ficou perfeito.
Obrigado de Novo.
Pedro

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2014 12:27 pm