Ir ao conteúdo

Excel VBA - criando uma caixa de texto com algumas funções


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

Precisa criar uma caixa de texto que perguntasse duas coisas. A primeira "Qual a posição do item number = (precisava que aqui ele pegasse a informação de uma celula especifia, no caso a celula "C2")?" 

E a segunda pergunta dentro da mesma caixa de texto seria "De quanto em quanto ele acrescenta?" 

 

a primeira pergunta seria para a primeira posição da celula "B17 - Position" e a segunda referente as celulas seguintes. Se s resposta pra primeira pergunta for "10", por exemplo, e a resposta de segunda pergunta for de "10" tambem. preciso que isso ocorra 

image.png.89c2e11ffc65b3fc03fce3f908ece50a.png

 

imaginei algo mais ou menos assim: image.png.33640493bb71379aa0d8f206910e73c4.png mas não tenho conhecimento de VBA suficiente ainda pra saber colocar uma celula como parte do texto da primeira pergunta. Caso não tenho como pensei em fazer uma outra caisxa de textBox perguntando primeiramente qual o Part Number em questão e depois as infos dele para serem preenchidas

 

Postado

@Midori  aqui, mas assim, como eu não sei fazer por codigo o imputBox eu não coloquei ele junto, basicamente indiquei o que falei ali em cima, tenho uma macro que vou fazer substituir a "pesquisa" quando acaba o primeiro part number e pegar o proximo item da tabela, quando acabar o  "NXH - 2.4.1.20.0470" para passar pro proximo que seria o "NXH - 2.4.1.20.0471", tenho que pegar essas informações de outras tabelas e tenho que fazer muita coisa ainda nessa planilha, por isso ta meio difícil explicar exatamente o que quero ja que tenho que pensar nas proximas coisas a se fazer tambem, perdão.

 

 

 

exemplo1.xlsx

 

Postado

@isabela queiroz Ainda não entendi o que quer dizer com "De quanto em quanto ele acrescenta"

 

Se possível mostre a planilha do exemplo sem edição e como ela está antes da perguta. E depois mostre como deve ficar após a entrada dos valores.

Postado

@Midori Acho que nâo posso mostrar a planilha original por ser dos clientes da minha empresa. Mas o que quis dizer no caso é que quando aparecer a caixa de texo fazendo a pergunta "De quanto em quanto ele acrescenta" seria uma informação que não tem dentro do excel, então teria que ser colocada a mao, o que eu quis dizer com acrescentar foi na verdade seria dizer se ele vai de, por exemplo, 2 em 2, se for de "2" ficaria 2 depois 4, 6 ,8, 10...

se colocar 10 ele vai de 10, 20,30,40... ate acabar.

 

então ali na "position" esta sem informação nenhuma, a intenção é que quando aparecer a caixa de texto com as perguntas e forem colocadas as informações, ele aderir e colocar de 10 em 10, por exemplo.

 

se encontrar alguma forma mais simples de fazer isso pode ser tambem, só não tive alguma ideia melhor, assim ta bem complicado, é que como esse template vai ser usado pra muitas informaçoes de varios clientes to tentando fazer de uma forma meio aberta para não dar erro com nenhum dos numeros que forem colocados lá.

 image.png.0cc4c71242520a741b23811f5d1cd732.png

exemplo1.xlsx

Postado

@isabela queiroz Usei o primeiro anexo como modelo. Veja se é isto,

 

Sub AdicionaPosition(Area As Range, Inicio As Integer)
    Dim Celula  As Range
    Dim Proximo As Integer
    
    Proximo = Inicio
    
    For Each Celula In Area
        Celula = Proximo
        Proximo = Proximo + Inicio
        If UBound(Filter( _
            Application.Transpose([A5:A13]), Celula(2, 2))) > -1 Then
                Proximo = Inicio
        End If
    Next Celula
End Sub

Sub Macro()
    Dim Numero  As Integer
    
    Numero = InputBox("Informe o número")
    
    Call AdicionaPosition([B17:B64], Numero)
End Sub

 

Postado

@Midori exatamente isso! a unica coisa que não sei se tem como fazer mas precisava era que os dois primeiros fossem iguais em vez da macro fazer assim image.png.e116fd9d7ac5c3ad57b4a5d474cbe154.png10, 20, 30, 40...

fazer o primeiro ser 10, o segundo 10 tambem que ele sempre vai ser baseado no primeiro. Basicamente considerar que o primiero que ta de azul é o lider e os outros vão se basear nele então o proximo tambem vai ser 10, igual o primeiro então ficaria

image.png.f77e0e3a4627dce764c5e78a68745968.png 10, 10, 20, 30...

  • Solução
Postado

@isabela queiroz Para repetir no segundo fica assim,

 

Sub AdicionaPosition(Area As Range, Inicio As Integer)
    Dim Celula  As Range
    Dim Proximo As Integer
    
    Proximo = Inicio
    
    For Each Celula In Area
        Celula = Proximo
        Proximo = Proximo + Inicio
        If UBound(Filter( _
            Application.Transpose([A5:A13]), Celula(1, 2))) > -1 Or _
            UBound(Filter( _
                Application.Transpose([A5:A13]), Celula(2, 2))) > -1 Then
                    Proximo = Inicio
        End If
    Next Celula
End Sub

 

Postado

@Midorieu fui passar pra macro certa com os dados originais e não mudou nada, eu testei na de exemplo que te mandei e funcionou, não entendi porque noa funcionou na original, as coisas estão nas mesmas celulas, a unica coisa que muda é essa parte aqui image.thumb.png.588110603d985fe6698551b05c22056c.png que na que te mandei começa na A5 e na original começa na A2 mas eu alterei isso no codigo ficando assim 

 

Sub AdicionaPosition(Area As Range, Inicio As Integer)
    Dim Celula  As Range
    Dim Proximo As Integer
    
    Proximo = Inicio
    
    For Each Celula In Area
        Celula = Proximo
        Proximo = Proximo + Inicio
        If UBound(Filter( _
            Application.Transpose([A2:A11]), Celula(1, 2))) > -1 Or _
            UBound(Filter( _
                Application.Transpose([A2:A11]), Celula(2, 2))) > -1 Then
                    Proximo = Inicio
        End If
    Next Celula
End Sub

 image.png.6f15fedf346f07a33306583c31d5ae86.png

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...