knephk Postado Maio 11, 2020 Denunciar Share Postado Maio 11, 2020 (editado) Olá, Estou começando há poucas semanas em VBA. Tenho um dúvida; Nessa aba, o valor da célula A1 muda constantemente. Eu gostaria que toda vez que ela mudasse, o excel encontrasse (dirigisse a tabela) para o valor correspondente na tabela que vai de A6:A107. Tentei alguns códigos de VBA, mas não obtive sucesso. Alguém poderia me ajudar? valeu! Editado Maio 11, 2020 por knephk Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Maio 12, 2020 Denunciar Share Postado Maio 12, 2020 Boa tarde. Poderia me tirar duvida sobre seu projeto? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 knephk Postado Maio 12, 2020 Autor Denunciar Share Postado Maio 12, 2020 1 hora atrás, Alyson Ronnan Martins disse: Boa tarde. Poderia me tirar duvida sobre seu projeto? claro. o que deseja saber? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Maio 12, 2020 Denunciar Share Postado Maio 12, 2020 Não entendi com o valor vai para baixo kkkk Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Maio 12, 2020 Denunciar Share Postado Maio 12, 2020 Teria como colocar um exemplo manual "pequeno" exemplo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 knephk Postado Maio 12, 2020 Autor Denunciar Share Postado Maio 12, 2020 (editado) 33 minutos atrás, Alyson Ronnan Martins disse: Não entendi com o valor vai para baixo kkkk Esqueci de dizer que o número de amarelo está entre 0 e 100 e ele é puxado de outra tabela. Então, quando o número em amarelo mudar, digamos que fosse 58. Eu gostaria que a tabela atual centralizasse o número 58. Eu encontrei esse código em outro fórum, mas não consigo dar certo... Dim VisRows As Integer Dim VisCols As Integer Application.ScreenUpdating = False ' ' Switch over to the OnCell's workbook and worksheet. ' OnCell.Parent.Parent.Activate OnCell.Parent.Activate ' ' Get the number of visible rows and columns for the active window. ' With ActiveWindow.VisibleRange VisRows = .Rows.Count VisCols = .Columns.Count End With ' ' Now, determine what cell we need to GOTO. The GOTO method will ' place that cell reference in the upper left corner of the screen, ' so that reference needs to be VisRows/2 above and VisCols/2 columns ' to the left of the cell we want to center on. Use the MAX function ' to ensure we're not trying to GOTO a cell in row <=0 or column <=0. ' With Application .Goto reference:=OnCell.Parent.Cells( _ .WorksheetFunction.Max(1, OnCell.Row + _ (OnCell.Rows.Count / 2) - (VisRows / 2)), _ .WorksheetFunction.Max(1, OnCell.Column + _ (OnCell.Columns.Count / 2) - _ .WorksheetFunction.RoundDown((VisCols / 2), 0))), _ scroll:=True End With OnCell.Select Application.ScreenUpdating = True End Sub Editado Maio 12, 2020 por knephk Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Maio 12, 2020 Denunciar Share Postado Maio 12, 2020 manda um exemplo para eu criar agora aqui. (tipo a tabela preenchida para ver aonde vai) Vou ficar acordado até as 11:50 hoje esse negócio sai kkkkk Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 knephk Postado Maio 13, 2020 Autor Denunciar Share Postado Maio 13, 2020 (editado) Muito obrigado pela ajuda, de antemão! vamos lá! 1) A célula A1 muda de valor constantemente, pois é um link externo. Vai de 1 a 100. 2) A tabela vai de 1 a 100. Da célula A3 até A102. 3) Eu gostaria que sempre que o valor de A1 mudasse, o valor correspondente na tabela de A3:A102 ficasse centralizada no meio da tela. 4) Se o valor de A1 mudar para 70, o 70 ficar centralizado na tela. Será que você consegue me ajudar? MUITO OBRIGADO! Editado Maio 13, 2020 por knephk Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Maio 13, 2020 Denunciar Share Postado Maio 13, 2020 duvida na palavra "centralizado": é assim? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Maio 13, 2020 Denunciar Share Postado Maio 13, 2020 Como não consigo ver o seu projeto e imaginar como vai ser esse momento de "atualização do valor. Segue abaixo o código Public Sub cmd() Dim Linha Linha = fnPesquisarPosicao(Range("A1").Value) cCentralizarCampo (Linha) End Sub Public Function fnPesquisarPosicao(valor) For x = 3 To 103 Step 1 If Cells(x, "A").Value = valor Then fnPesquisarPosicao = x End If Next x End Function Public Sub cCentralizarCampo(Linha) With Range("A" & Linha) .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With End Sub Logo após envio a planilha usada para teste: https://drive.google.com/open?id=1FI_pmBF2ZAXM_aCczR6bxKHWqQfq8ORK Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 knephk Postado Maio 13, 2020 Autor Denunciar Share Postado Maio 13, 2020 (editado) 8 horas atrás, Alyson Ronnan Martins disse: Como não consigo ver o seu projeto e imaginar como vai ser esse momento de "atualização do valor. Segue abaixo o código Public Sub cmd() Dim Linha Linha = fnPesquisarPosicao(Range("A1").Value) cCentralizarCampo (Linha) End Sub Public Function fnPesquisarPosicao(valor) For x = 3 To 103 Step 1 If Cells(x, "A").Value = valor Then fnPesquisarPosicao = x End If Next x End Function Public Sub cCentralizarCampo(Linha) With Range("A" & Linha) .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With End Sub Logo após envio a planilha usada para teste: https://drive.google.com/open?id=1FI_pmBF2ZAXM_aCczR6bxKHWqQfq8ORK Obrigado pela resposta Alyson Ronnan. A macro funcionou, mas eu não fui claro sobre o meu problema. E por isso, ela não conseguiu atingir o meu objetivo. A Célula A1 atualiza constantemente, sem necessidade de nenhum comando. É um link DDE. O que eu preciso é que quando essa célula A1 mude de valor, que o excel role e encontre o valor de A1 no intervalo entre A3:A102 e centralize a página nesse valor. Eu já testei esse código abaixo: Sub Find_First() Dim FindString As Long Dim Rng As Range FindString = Sheets("Planilha2").Range("A1").Value If Trim(FindString) <> "" Then With Sheets("Planilha2").Range("A2:A103") Set Rng = .Find(What:=FindString, _ After:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False) If Not Rng Is Nothing Then Application.Goto Rng, True End With End Sub Ele encontra o valor. O problema é que deixa o valor encontrado entrte a3:a100 na primeira linha da página. Editado Maio 13, 2020 por knephk Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Maio 14, 2020 Denunciar Share Postado Maio 14, 2020 Boa tarde @knephk. Nunca usei um link do tipo DDE. Precisa fazer um teste para identificar quem esta acionando quando a alteração é gerada ela atualização. Vamos dividor o problema em dois. 1-Momento em que a alteração é realizada (pela atualização do link DDE). 2-Chamar o valor abaixo, entre as linhas "A3:A100". 1: Como não tenho como testar quando a alteração é realizada preciso que você tente descobrir ai. Exemplos: Dentro da sua planilha você pode agenda eventos para alterações(change) ou para calculos(Calcule). Sendo assim tenta colocar um código para exibir mensagem para cada alteração. Exemplo: Depois de realizar alteração aparece a mensagem: Claro que seu projeto pode não exibir mensagem no "Change" então precisa testar os outros também para ver quando atualizar e se vai aparecer mensagem. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
knephk
Olá,
Estou começando há poucas semanas em VBA.
Tenho um dúvida;
Nessa aba, o valor da célula A1 muda constantemente. Eu gostaria que toda vez que ela mudasse, o excel encontrasse (dirigisse a tabela) para o valor correspondente na tabela que vai de A6:A107.
Tentei alguns códigos de VBA, mas não obtive sucesso.
Alguém poderia me ajudar?
valeu!
Editado por knephkLink para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.