none
Pergunta RRS feed

  • Pergunta

  • Olá pessoal, alguém consegue ajudar?

    Estou montando um controle de pedidos, na qual eu tenho 2 abas no excel uma com cada função. 

    Sendo na primeira somente X e na segunda Y

    Como na aba X existe muitos itens em sequencia , alguns sem disponibilidade, criei uma função "Adicionar" na qual joga os itens e colunas desejados por mim na aba Y (Utilizei macro para está função.) O porem é que o Macro joga somente a linha 8 e as colunas que eu gravei. Então quando adiciona a mesma função "Adicionar" na linha subsequente (numero 9) ele adiciona diretamente a linha 8.

    Gostaria de saber se existe uma função que aplique para todas as linhas sequentes.

    Outra duvida é a mesma para remover.

    Alguem consegue me ajudar ? Ou tenho que fazer no dedo um a um ?

    Obrigado,

    quinta-feira, 11 de junho de 2015 20:40

Todas as Respostas

  • Poste aqui seu código para darmos uma olhada
    quinta-feira, 11 de junho de 2015 21:00
  • Olá Andre,

    Veja se consegue me ajudar:

    Se reparar veja que ele adiciona uma linha com outro desenvolvedor puxando a macro remover.

    Porem a quando seleciona remover , a macro remove a linha 9, mesmo que o item esteja na linha 10.

    Para adicionar a mesma coisa sempre adiciona a linha 8 quando tem que adicioanr a linha 9.

    Gostaria De saber se existe essa possibilidade de adicionar a mesma macro para todas as linhas puxando as respectivas.

    Estou enviando uma tabela com o exemplo.

    http://www.4shared.com/file/6ZOjZet4ce/Exemplo.html

    Sub excluir()
    '
    ' excluir Macro
    '
    
    '
        Rows("9:9").Select
        Selection.Delete Shift:=xlUp
    End Sub
    Sub adicionar()
    '
    ' adicionar Macro
    '
    
    '
        Range("A9").Select
        Selection.Copy
        Sheets("Meu Pedido").Select
        Range("A8").Select
        ActiveSheet.Paste
        Sheets("Brinquedos").Select
        Range("C9:G9").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Meu Pedido").Select
        Range("C8").Select
        ActiveSheet.Paste
        Sheets("Brinquedos").Select
        Range("K9").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Meu Pedido").Select
        Range("B8").Select
        ActiveSheet.Paste
        Rows("8:8").Select
        Application.CutCopyMode = False
        Rows("8:8").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("H8").Select
        ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-6]"
        Range("F8").Select
        ActiveSheet.Buttons.add(817.5, 121.5, 48, 12).Select
        Selection.OnAction = "excluir"
        Selection.Characters.Text = "Remover"
        With Selection.Characters(Start:=1, Length:=7).Font
            .Name = "Calibri"
            .FontStyle = "Regular"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = 1
        End With
        Range("J8").Select
        Sheets("Brinquedos").Select
    End Sub
    

    segunda-feira, 15 de junho de 2015 15:40
  • O código está travado nas mesmas linhas pois é assim que o gravador de macro funciona.

    Para alternar o valor da linha de acordo com a sua necessidade, você deverá declarar uma variável que irá receber o valor desejado.

    Fiz o exemplo abaixo para o procedimento excluir.

    Para o procedimento adicionar, a lógica é a mesma, declare uma variável que irá receber um valor e substitua no código.

    Sub excluir()
    '
    ' excluir Macro
    '
    
    '
    'Aqui declaramos uma variável do tipo inteiro
    Dim numeroLinha as integer
    
    'aqui dizemos que o valor da variável é o valor da linha da célula desejada
    'ex: célula A9 selecionada, valor retornado = 9
    numeroLinha = selection.row
    
    
    'Aqui ao invés de usar o número fixo da lixa, utilizamos a variável
        Rows(numeroLinha).Select
        Selection.Delete Shift:=xlUp
    End Sub


    • Sugerido como Resposta André Santo segunda-feira, 15 de junho de 2015 17:54
    segunda-feira, 15 de junho de 2015 16:08
  • Muito Obrigado Andre,

    Deu certo no remover e adicionar. Só que estou com outro porem.. 

    Quando adiciono a linha que desejo é copiado tudo como foi estabelecido. O porem é, preciso que seja copiado as colunas em uma ordem diferente. Ou seja... Tenho as colunas de A - M 

    Preciso copiar as colunas no seguinte exemplo seguindo o raciocínio anterior:

    A9 - K9 - C9:G9 


    segunda-feira, 15 de junho de 2015 17:28
  • Não entendi muito bem, mas veja, basta brincar com a maneira como você copia e cola.

    Na hora de copiar é possível referenciar

    Toda uma linha:

    Rows(1).select


    Toda uma coluna:

    Columns(2).select


    Uma célula específica:

    Cells(linha, coluna).select ex: cells(1,1).select (A1)


    Um intervalo:

    Range("A9:k9").select


    Utilizando variáveis e o operador de concatenação '&':

    Range("A" & numeroLinha & ":k" & numeroLinha).select


    segunda-feira, 15 de junho de 2015 18:13
  • Bom dia Andre,
    Me desculpe mas não estou conseguindo... já tentei brincar com a variável mas não estou conseguindo montar este quebra cabeça.

    Consegue me passar seu email para me ajudar melhor ??

    terça-feira, 16 de junho de 2015 12:04
  • Bom dia, 

    Tente detalhar melhor como esses dados precisam ser colados

    Se possível poste umas imagens.

    Vamos por aqui mesmo, pois de repente tem mais gente com a mesma dúvida

    Abs


    • Editado André Santo terça-feira, 16 de junho de 2015 14:11
    terça-feira, 16 de junho de 2015 14:11
  • Bom dia Andre,

    Vamos lá... no exemplo abaixo pode observar que na coluna M existe a opção "Adicionar".  O que leva para a aba Pedidos, apresentado nas próximas imagem. Antes que de continuidade nas próximas imagens minha duvida é a seguinte. Quando aperto o Adicionar na Coluna M, eu preciso que seja adicionado somente algumas colunas fora da ordem Na tela Meus pedidos. Alem disto, preciso que a opção adicionar seja definido direto para linha que se encontra. Pois como pode ver nos códigos/imagens ele salva somente a linha 8 com as colunas que eu desejei. 
    Preciso que, a opção "Adicionar" copie automaticamente as linhas com as colunas que eu desejo. Sem que eu precise criar sempre uma macro para aquela linha.

    E na função excluir em MEUS PEDIDOS está sempre travado na linha 9. Preciso que seja excluido tambem a linha na qual a opção se encontra.

    Sub adicionar()
    '
    ' adicionar Macro
    '
    
    '
        Range("A9").Select
        Selection.Copy
        Sheets("Meu Pedido").Select
        Range("A8").Select
        ActiveSheet.Paste
        Sheets("Brinquedos").Select
        Range("K9").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Meu Pedido").Select
        Range("B8").Select
        ActiveSheet.Paste
        Sheets("Brinquedos").Select
        Range("C9:G9").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Meu Pedido").Select
        Range("C8").Select
        ActiveSheet.Paste
        Rows("8:8").Select
        Application.CutCopyMode = False
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("H8").Select
        ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-6]"
        Range("H9").Select
        ActiveSheet.Buttons.add(816.75, 122.25, 49.5, 10.5).Select
        Selection.OnAction = "excluir"
        Selection.Characters.Text = "Remover"
        With Selection.Characters(Start:=1, Length:=7).Font
            .Name = "Calibri"
            .FontStyle = "Regular"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = 1
        End With
        Sheets("Brinquedos").Select
        Range("K9").Select
    End Sub

    Função excluir

    Sub excluir()
    '
    ' excluir Macro
    '
    
    '
        Rows("9:9").Select
        Selection.Delete Shift:=xlUp
    End Sub



    • Editado Hugugol quarta-feira, 17 de junho de 2015 13:31
    quarta-feira, 17 de junho de 2015 13:28
  • Sub excluir()
    '
    ' excluir Macro
    '
    
    '
        Dim linhaSelecionada as integer
    
        linhaSelecionada = selection.row 
      
        Rows(linhaSelecionada).Select
        Selection.Delete Shift:=xlUp
    End Sub
    Aplique essas alterações e veja se o método excluir obtém o comportamento desejado, depois partimos pro adicionar.
    • Sugerido como Resposta André Santo quinta-feira, 18 de junho de 2015 13:44
    quinta-feira, 18 de junho de 2015 13:44
  • Já utilizei este codigo, ele fica deletando somente a linha 18.
    As vezes até da certo, porem eu tenho que excluir em ordem.

    quinta-feira, 18 de junho de 2015 19:34
  • Aproximei a imagem pra ver melhor.. você está usando botões ??
    quinta-feira, 18 de junho de 2015 19:41
  • Exatamente.

    Estou usando Controle de Formulários e insiro o botão

    quinta-feira, 18 de junho de 2015 20:49
  • Pode ser um botão que pergunta qual linha deseja excluir ?

    Estou excluindo a linha selecionada, pois pensei que era hiperlink, como é botão.. qualquer célula pode estar selecionada.

    quinta-feira, 18 de junho de 2015 22:33
  • Podemos fazer sim...

    Porem como vamos fazer na opção adicionar ?


    sexta-feira, 19 de junho de 2015 17:33
  • Sub excluir()
    '
    ' excluir Macro
    '
    
    '
        Dim linhaSelecionada as integer
    
        linhaSelecionada = inputbox("Qual linha você deseja remover ?", "Remover Linha")
      
        Rows(linhaSelecionada).Select
        Selection.Delete Shift:=xlUp
    End Sub
    Veja se atende ...
    sexta-feira, 19 de junho de 2015 17:46
  • Para o adicionar, o usuário pode também responder qual linha deseja inserir ?
    sexta-feira, 19 de junho de 2015 17:47
  • Para "adicionar" essa função não permite devido as quantidade de produtos e outro meio de como a tabela base chega até mim. Alem de que precisa ser adicionado colunas em ordens diferentes na outra aba(a que exclui).

    sexta-feira, 19 de junho de 2015 20:05
  • Podemos substituir esses botões por hyperklinks ? 
    segunda-feira, 22 de junho de 2015 11:55
  • Podemos fazer o teste... como faço ?
    segunda-feira, 22 de junho de 2015 19:11