Sempre utilizei o código abaixo:
Dim I As Integer
I = 1
Do While Range("A" & I).Value <> ""
I = I + 1
Loop
Range("A" & I).Select
Range("A" & I).Select
'Localiza a próxima célula vazia
Range("A1048576").End(xlUp).Offset(1, 0).Select
Análise do código:
- Range("A1048576")à corresponde a última célula da coluna A
- .End(xlUp)à localiza a próxima célula preenchida para cima (xlUp)
- .Offset(1, 0)à significa que a seleção estará uma linha abaixo e na mesma coluna da célula selecionada.
Espero que tenha sido útil, qualquer dúvida ou sugestão de assunto a ser abordado mantenha contato pelos comentários.
Até a próxima...
Po Valeu mesmo tava atraz do significado dessa linha de código.
ResponderExcluirExcelente!
ResponderExcluircódigo muito limpo e que não exigente muito processamento!!
Obrigado por compartilhar!
Como faço pra procurar a proxima celula vazia na mesma linha ?
ResponderExcluirBoa Noite, Guilherme!
ExcluirJá deves ter conseguido resolver seu problema... mas fica o registro de como proceder:
Para isso basta usar as variações (xlLeft), (xlRigth) no lugar do .End(xlUp)
Obrigado pela contribuição!
Este comentário foi removido pelo autor.
ExcluirEu consigo pegar a linha essa linha preenchida e colar em outra aba?
ResponderExcluirBoa Noite, Gabriel!
ExcluirConsegue sim, segue um exemplo onde procurarei a linha da última célula preenchida e copiarei-a:
'Localiza a linha em que consta a última célula preenchida na coluna A
iFim = Range("A1048576").End(xlUp).Row
'Copia a última linha preenchida na coluna A
Rows(iFim & ":" & iFim).Copy
Obrigado pela contribuição!
Boa Noite, Gabriel!
ExcluirConsegue sim, segue um exemplo onde procurarei a linha da última célula preenchida e copiarei-a:
'Localiza a linha em que consta a última célula preenchida na coluna A
iFim = Range("A1048576").End(xlUp).Row
'Copia a última linha preenchida na coluna A
Rows(iFim & ":" & iFim).Copy
Obrigado pela contribuição!
Show...muito obrigado
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirGostaria de saber desse primeiro código:
ResponderExcluirDim I As Integer
I = 1
Do While Range("A" & I).Value <> ""
I = I + 1
Loop
Range("A" & I).Select
Queria aplicar isso de outra forma, só que tentei fazer dessa forma aqui e não reconheceu a inteira I como valor da linha.
Este é o meu algoritmo:
I = 3
Sheets("Banco de Dados").Select
Do While Range("k" & I).Value <> Range("'Controle Financeiro'!a32")
I = I + 1
Loop
If Range("f32") = Range("p" & I) Or Range("f32") = "" Or Range("f32") = "-" Then
MsgBox "Não houve alteração de situação.", , "Aviso"
Sheets("Controle Financeiro").Select
Range("a32").Select
Pode me dizer alguma outra forma de usar uma variável pra destacar qual a linha?
E outra pergunta, pode me explicar porque isso não da certo, e como daria certo? Eu queria colar a função "se" ali embaixo já pronta na célula.
Range("D27").Select
ActiveCell.FormulaR1C1 = _
"=se(b27=""Digite o valor."";""Valor restante."";se(c27=""Valor quitado."";""Valor restante."";b27-c27))"
Segue dois exmplos para se utilizar, estude-os
ExcluirRange("A7").Select
ActiveCell.FormulaR1C1 = "=IF(R[-6]C&R[-6]C[1]<>"""",R[-6]C+R[-6]C[1],"""")"
'=SE(A1&B1<>"";A1+B1;"")
Range("C1").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-2]&RC[-1]<>"""",RC[-2]+RC[-1],"""")"
'=SE(A1&B1<>"";A1+B1;"")
BOA NOITE AMIGO MUITO BOM O TÓPICO.
ResponderExcluirBEM! EU TENHO UM CÓDIGO QUE GERA TODAS AS COMBINAÇÕES DE 60, TOMADO 6 A 6.
MAS QUANDO CHEGA NA ULTIMA LINHA (A1 1048576) ELE PARA COMO FAÇO PARA
QUE ELE CONTINUE E GERE TODAS AS COMBINAÇÕES NA PLANILHA.
OU SEJA MUDAR DO COLUNA
.
‘C(n, p) = n! / ((n-p)! * p!)
‘lPermutações a ser definido, seria o ‘p’ da fórmula acima
Const lPermutações As Long = 6
Dim r As Long
Dim v(1 To 60)
Sub Teste()
Dim lElementos As Long
Dim l As Long
‘Popula vetor de elementos
For l = LBound(v) To UBound(v)
v(l) = l
Next l
‘C(n, p) = n! / ((n-p)! * p!)
‘lElementos seria o ‘n’ da fórmula acima
lElementos = UBound(v) – LBound(v) + 1
‘Contador de linhas para uso no Excel:
r = 0
‘Limpa Planilha ativa
Cells.Delete
‘Inicia recursão:
Combinação lElementos, lPermutações, 1
End Sub
Sub Combinação(n As Long, p As Long, k As Long, Optional s As String)
If p > n – k + 1 Then Exit Sub
If p = 0 Then
‘Para visualizar o resultado de uma combinação no Excel:
r = r + 1
Cells(r, “A”).Resize(1, lPermutações) = Split(s, “|”)
‘Se quiser visualizar o resultado na Janela de Verificação imediata, use:
Debug.Print s
Exit Sub
End If
‘Recorre novamente:
Combinação n, p – 1, k + 1, s & v(k) & “|”
‘Recorre novamente a partir do elemento anterior:
Combinação n, p, k + 1, s
DoEvents
End Sub
Olá Rodrigo, bom dia!
ResponderExcluirGostaria de contar com a sua ajuda para escrever um código VBA que busque a próxima celula vazia na mesma linha?
Haja visto que o código para a busca da celula vazia na coluna funciona perfeitamenta, porém tentei modificar esse código para buscar a celula vazia na culuna mas não obtive êxito apesar de seguir a orientação que você forneceu ao Gilherme.
Para isso basta usar as variações (xlLeft), (xlRigth) no lugar do .End(xlUp)
ExcluirObrigado pela contribuição!
Para isso basta usar as variações (xlLeft), (xlRigth) no lugar do .End(xlUp)
ExcluirObrigado pela contribuição!
Olá Rodrigo! Muito obrigado por responder ao meu questionamento, porém fiz a alteração que você informou mas o código ainda não está indo para a proxima celula vazia na mesma linha? Fiz o código desta maneira:
ResponderExcluirRange("A1048576")(xlRigth).Offset(1, 0).Select
Porém ele me leva a ultima celula vazia da coluna, mas o que quero é ir para a proxima celula vazia da Linha.
Desde já agradeço.
Angelo...
ExcluirFaz o seguinte... Utiliza o seguinte código:
Range("XFD2").End(xlToLeft).Offset(0, 1).Select
Análise do código:
Range("XFD2") : corresponde a última célula da linha 2... (o "2" corresponde ao número da linha... por exemplo se vc quiser a 10º linha: coloque "XFD10")
.End(xlToLeft) : localiza a próxima célula preenchida para esquerda (xlToLeft)
.Offset(0, 1).Select : significa que a seleção estará na próxima coluna a direita e na mesma linha...
Esse código seleciona a próxima célula vazia na linha 2...
Espero ter ajudado...
Valew...
Guilherme
Boa noite amigo, gostaria de encontrar a próxima célula vazia a direita e colar valores nela, porém os valores que eu copiei seriam valores um encima do outro, uma coluna de 3 valores, que atualizam toda semana. Pode me ajduar?
ExcluirBom dia, Arthur!
ExcluirPrimeiramente deves copiar o conteúdo, colocando-o na área de transferência:
Range("D3").Copy 'No meu caso o conteúdo a ser copiado está na célula D3
Posteriormente para encontrar a próxima célula vazia a direita, será necessário posicionar na primeira célula daquela linha:
Range("A46").End(xlToRight).Offset(0, 1).Select 'No meu caso utilizei a linha 46
Por fim será necessário colar o conteúdo copiado:
ActiveSheet.Paste
Espero ter ajudado.
Olá Pessoal!
ResponderExcluirTo com um pequeno problema. Tenho uma tabela mais ou menos assim(abaixo), que quando aparece um x na coluna "500", precisa de acordo com a data, ir pra uma outra tabela, que também precisa mostrar o numero.
TABELA 1
Numero Data 500
100 29/06/2015 X
101 29/06/2015
102 30/06/2015
Tabela 2
29/06/2015
500 100
Muito bom, era o que eu precisa e não estava conseguindo encontrar. DEUS o abençoe!
ResponderExcluirMuito bom, era o que eu precisa e não estava conseguindo encontrar. DEUS o abençoe!
ResponderExcluircomo faço para inciar a localização?
ResponderExcluircara, vc me ajudou muitoooooooooooooooooooooooo
ResponderExcluirvaleu!
Olá Rodrigo, preciso encontrar essa linha e automaticamente preenche-la com um numero que digitei em algum local da planilha. Tem como?
ResponderExcluirOu seja. Eu preciso que toda vez que eu digitar um numero na linha C1, esse numero va para uma lista. Exemplo: digitei 250 na C1 e ele vai para a A1. Ai precisei digitar na C1 o numero 260, mas ai quero que ele vá para a A2. Assim criando uma lista sequencial com os numeros que digitei em C1.
Boa noite,
ExcluirSim é perfeitamente possível, basta colocar o código no evento Worksheet_Change da planilha em questão:
Algo como:
Private Sub Worksheet_Change(ByVal Target As Range)
'Declara a variavel
Dim iFim As Long
'Valida se a alteração foi na célula C1
If Target.Row = 1 And Target.Column = 3 Then
'Localiza o último registro da coluna A
iFim = Range("A1048576").End(xlUp).Row + 1
'Transpõe o valor digitado na célula C1 para a lista contida na Coluna A
Range("A" & iFim).Value = Range("C1").Value
End If
End Sub
Obrigado pela contribuição!
Bom dia,
ExcluirTalvez não esteja no local apropriado mas tenho uma duvida e gostava de a esclarecer:
É possível num ciclo saltar as linhas vazias sem alterar o valor da variável? isto é:
exemplo simples
for x=1to20
if A="janeiro" then ...
next x
exemplo
A coluna A tem algumas linhas sem registos e Janeiro encontra-se na linha 4 e na 6, queria que o valor de x ao verificar a linha 4 onde se encontra a primeira instrução pretendida fosse 1 e o da linha 6 fosse 2, é possível? como?
Melhores cumprimentos
Bom dia, Cortez!
ExcluirO comando FOR sempre fará o incremento da variável ao passar pelo NEXT, para contornar estes casos normalmente usa-se X = X - 1 para os casos em que não deve ser incrementado.
Não entendi com clareza qual é sua dúvida e como desejas aplicar, mas vou tentar expressar da forma que entendi... Pelo trecho de código que tu inseriste imagino que desejas percorrer 20 vezes, porém pode haver linhas em branco. Neste caso sugiro que faças da seguinte forma, paraseguir sua estrutura de algoritmo (existem outras formas):
For X = 1 to 20
If A = "janeiro" then
If Selection.Value = "" then
X = X - 1
End If
...
End if
Next X
Obrigado pela contribuição!
Boa noite Rodrigo
ResponderExcluirPreciso de código para imprimir uma planinha que comece A1,mas que após encontrar uma linha vazia,entenda que aquela é a área de impressão. Desde já muito obrigado.
Boa noite Rodrigo
ResponderExcluirPreciso de código para imprimir uma planinha que comece A1,mas que após encontrar uma linha vazia,entenda que aquela é a área de impressão. Desde já muito obrigado.
obrigado,deu certo
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirRange("A1048576").End(xlUp).Offset(1, 0).Select
ResponderExcluire se a tabela inteira estiver vazia...?
ele localiza a1 ?
Range("A1048576").End(xlUp).Offset(1, 0).Select
ResponderExcluire se a tabela inteira estiver vazia...?
ele localiza a1 ?
Ótimo post, exatamente o que eu procurava. Valeu!
ResponderExcluirÓtimo post, parabéns!
ResponderExcluirSeguinte: tenho uma planilha onde preciso que:
ResponderExcluirEla pesquise o "nome da coluna", encontre, copie os dados abaixo dela até a ultima linha; depois cole em um local que eu pré estabelecer em outra planilha...
Pessoal preciso de uma ajuda, estou montando uma planilha de controle de estoque e gostaria que na coluna Qtde qdo eu clicar no botão ADD, somasse o valor 1 e para os próximos registros quando eu chegasse na mesma coluna idem.
ResponderExcluirEx. Data troca | Qtde | Resp.
29/6/2018 | 1 | Fulano
29/6/2018 | 1 | Beltrano
Olá! Preciso de ajuda!
ResponderExcluirEstou tentando fazer um macro numa planilha básica, porém, os lançamentos estão sendo sobrepostos ao invés de ir para a ultima célula vazia.
Segue programação:
Range("A2:B21").Select
Selection.Copy
Sheets("lçto").Select
Range("A2").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("macro").Select
Range("A2:A21").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Fantástico! Muito obrigado! :)
ResponderExcluirPro cara que perguntou em 28 de agosto 07:14 Segue :
ResponderExcluirRange("A2:B21").Select
Selection.Copy
Sheets("lçto").Select
Range("A10000").End(xlUp).Offset(1, 0).Select ' <- O range deve ser a última celula para dar ".End(xLUp) e Offset(1,0)
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("macro").Select
Range("A2:A21").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Boa tarde! O Código é perfeito, me ajudou muito na produtividade do trabalho.
ResponderExcluir