Notifications
Clear all

Ultima coluna preenchida

8 Posts
4 Usuários
0 Reactions
1,465 Visualizações
(@boobymcgee)
Posts: 0
New Member
Topic starter
 

Pessoal, achei vários exemplos de como achar a última célula preenchida em uma única coluna, mas não consegui chegar em nenhum resultado em achar a última coluna com uma célula preenchida em uma seleção, ou seja, como exemplo, tenho um intervalo definido "C6:T20", entre as linhas 6 e 20 podem ter várias células preenchidas em algumas das colunas, então como saber qual a última coluna com uma célula preenchida.

 
Postado : 23/04/2018 7:28 am
(@klarc28)
Posts: 0
New Member
 
Option Explicit


Sub teste()
    
    Dim linha As Long
    Dim coluna As Long
    For linha = 6 To 20
        For coluna = 3 To 20
            
            If Sheets("Plan1").Cells(linha, coluna).Value = "" Then
                
                
                MsgBox "A célula da linha " & linha & " e coluna " & coluna & " está em branco"
                Exit Sub
            End If
        Next coluna
    Next linha
End Sub


Sub teste2()
    Dim intervalo As Range
    
    Dim cl As Object
    
    Set intervalo = Range("C6:T20")
    
    For Each cl In intervalo
        
        If cl.Value = "" Then
            
            MsgBox "A célula " & cl.Address & " está vazia"
            Exit Sub
        End If
    Next cl
End Sub


Sub Macro1()

    Range("C3:T20").Select
    Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
        MsgBox "Primeira célula vazia é " & ActiveCell.Address
End Sub
 
Postado : 23/04/2018 7:35 am
(@mprudencio)
Posts: 0
New Member
 

Da uma olhada aqui

https://br.ccm.net/faq/9238-vba-ultima- ... as-versoes

 
Postado : 23/04/2018 1:06 pm
(@boobymcgee)
Posts: 0
New Member
Topic starter
 

Blz pessoal, valeu pela ajuda, mas não consegui, tentando explicar melhor, no exemplo anexo teria que me retornar a informação de que a última coluna com alguma célula preenchida é a coluna "M".

O número de linhas e de colunas é variável conforme a planilha.

Valeu

 
Postado : 23/04/2018 3:09 pm
(@boobymcgee)
Posts: 0
New Member
Topic starter
 

oK, klarc28 obrigado pela rápida resposta, porém o código só atua na linha 31, não verificando o restante das outras linhas e só passando pelas colunas na linha 31. Anexei a planilha com o seu código, somente inclui na msgbox a informação da linha.

Também gostaria de poder escolher o intervalo a ser pesquisado e não toda a planilha, por exemplo, pesquisar do (A3:J25) ou (D25:N31) ou ...

 
Postado : 26/04/2018 9:26 am
(@klarc28)
Posts: 0
New Member
 

Anexos

 
Postado : 26/04/2018 11:52 am
(@xlarruda)
Posts: 0
New Member
 

Diga se é isso o que deseja:

Selecione o Intervalo e Surgira a Msgbox Com a letra da última coluna preenchida do mesmo.

 
Postado : 27/04/2018 6:56 am
(@boobymcgee)
Posts: 0
New Member
Topic starter
 

Pessoal, muito obrigado a todos que auxiliaram, klarc28 me desculpe por não conseguir expressar exatamente o que eu queria, mesmo assim você buscou atender o que eu necessitava, porém nos seus dois últimos códigos, conforme o intervalo selecionado, resulta na informação errada, selecionando o intervalo (D2:H22) o resultado correto seria a coluna 8 e linha 21 (H21), e não como mostrado, vide abaixo:
Mesmo assim agradeço imensamente a sua paciência e vontade de auxiliar.

xlarruda seu código funcionou perfeitamente, mesmo intervalo (D2:H22) e resultado correto coluna (H). Essa InputBox de selecionar é incrível, eu não conhecia isso.
Muito obrigado pelo seu apoio.

Mas eu também estava correndo atrás e fiz outro código usando "FIND", mesmo intervalo (D2:H22) e consegui chegar no resultado correto:

Sub UltimoValorLinhaColuna()
On Error Resume Next

Dim UltimaColuna As String
Dim Rng As Range
Dim Intervalo As String


    Intervalo = InputBox("Informe o intervalo a ser pesquisado")
    UltimaColuna = "*"

        
        With ActiveSheet.Range(Intervalo)
            Set Rng = .Find(What:=UltimaColuna, _
                            After:=.Cells(1), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByColumns, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False)
            If Not Rng Is Nothing Then
                MsgBox "A última coluna e célula preenchida é " & Rng.Address
            Else
                MsgBox "Não encontrado"
            End If
        End With

Set Rng = Nothing

End Sub

Um obrigado também ao MPrudencio, a partir da sugestão de pesquisa dele que caiu a ficha de usar o comando "find".

Deixo também o arquivo com todos os códigos utilizados.

Um obrigado a todos, vocês são feras.

 
Postado : 27/04/2018 11:34 am