Validação de campo ...
 
Notifications
Clear all

Validação de campo com conteúdo

4 Posts
2 Usuários
0 Reactions
1,067 Visualizações
(@suenne)
Posts: 50
Trusted Member
Topic starter
 

Bom dia,

preciso adicionar uma validação no código abaixo.

Preciso que ele só seja executado quando tiver informações na coluna K que é um campo calculado.

A tabela consiste no intervalo C12:N43.

Sub Enviar_dados()

Dim UltimaCelula As Long
Dim UltimaLinha As Long
Dim i As Integer

    Sheets("Ponto").Select
    Range("C13:N13").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

    Sheets("Base Geral").Select
    Range("D65536").End(xlUp).Offset(1, 0).Select
    
    Selection.PasteSpecial Paste:=xlPasteValues
    Selection.PasteSpecial Paste:=xlPasteFormats
    
    Application.CutCopyMode = False
    
    UltimaCelula = Sheets("Base Geral").Cells(Cells.Rows.Count, "A").End(xlUp).Row
    UltimaLinha = Sheets("Base Geral").Cells(Cells.Rows.Count, "D").End(xlUp).Row
    
        For i = UltimaCelula To (UltimaLinha - 1)
            
            Sheets("Base Geral").Range("A65536").End(xlUp).Offset(1, 0) = Sheets("Ponto").Range("D5").Value
            Sheets("Base Geral").Range("B65536").End(xlUp).Offset(1, 0) = Sheets("Ponto").Range("D7").Value
            Sheets("Base Geral").Range("C65536").End(xlUp).Offset(1, 0) = Sheets("Ponto").Range("D9").Value

        Next i

End Sub

Podem me ajudar?

Obrigada.

 
Postado : 02/09/2015 7:17 am
(@joelfl)
Posts: 22
Eminent Member
 

Suene,

pelo que entendi você quer executar as instruções que estão no For...Next somente quando a coluna K estiver preenchida.
Você já tentou adicionar um "IF...End IF" ?:

 For i = UltimaCelula To (UltimaLinha - 1)
 
    If cells( i,11) = "" then         
            Sheets("Base Geral").Range("A65536").End(xlUp).Offset(1, 0) = Sheets("Ponto").Range("D5").Value
            Sheets("Base Geral").Range("B65536").End(xlUp).Offset(1, 0) = Sheets("Ponto").Range("D7").Value
            Sheets("Base Geral").Range("C65536").End(xlUp).Offset(1, 0) = Sheets("Ponto").Range("D9").Value
    End if

Next i

Joel

 
Postado : 03/09/2015 6:22 am
(@suenne)
Posts: 50
Trusted Member
Topic starter
 

Joel, bom dia!

não funcionou conforme esperado.

Veja o que eu preciso:

ao selecionar enviar dados, eu precise que envie somente quando os valores na coluna HE (K), sejam maior ou igual a 00:00:00.

Porque eu posso registrar o ponto dia a dia e enviar ou fazer tudo de uma vez.

Da maneira que está ele envia todos os dados e acaba duplicando informação vazia com informação preenchida na aba Base Geral.

Consegui deixar claro?

Segue em anexo a planilha.

 
Postado : 03/09/2015 7:49 am
(@joelfl)
Posts: 22
Eminent Member
 

Suenne,

o código precisa analisar cada linha e depois exportar para a planilha de destino.

Fiz algumas alterações na macro, veja se atende a sua necessidade.

Joel

 
Postado : 03/09/2015 1:12 pm