Como fazer um botão que irá enviar todos os valores de uma tabela para uma linha em outra tabela

1

Eu nem tenho certeza se isso é possível, e o Google não está criando nada para mim. Eu tenho uma tabela com dados em C6: F12, G6: G8. Eu quero inserir um botão que irá enviar todos esses dados em uma única linha nova de outra tabela. Esta tabela será localizada mais abaixo na planilha. Dependendo do tamanho dos gráficos que insiro, o primeiro conjunto de dados irá girar em torno de 50A: 50AD.

Os dados de G7 e G8 seriam combinados e colocados em 50A. Então C6: F6 iria em 50B: 50E, C7: F7 iria em 50F: 50I, C8: F8 iria em 50J: 50m, C9: F9 iria em 50N: 50Q, C10: F10 iria em 50R: 50U, C11: F11 iria em 50V: 50Y, C12: F12 iria em 50Z: 50AC, e G6 iria em 50AD.

Cada vez que o botão é pressionado, uma nova linha seria criada, de modo que o segundo conjunto de dados estaria nas mesmas colunas, mas na linha 51, a terceira na linha 52, etc.

    
por Dave 21.04.2013 / 15:27

1 resposta

5

Passo a passo:

  1. Em sua pasta de trabalho, pressione Alt - F11 para abrir o Editor do Visual Basic (VBE)

  2. Clique em Inserir > Módulo do menu e cole o seguinte na janela de código grande

    Option Explicit
    
    Sub copyRow()
    Dim ws As Worksheet
    Dim lRow As Long
    
    ' define which worksheet to work on, i.e. replace Sheet1 with the name of your sheet
    Set ws = ActiveWorkbook.Sheets("Sheet1")
    
    ' determine the last row with content in column A and add one
    lRow = ws.Cells(Rows.Count, "A").End(xlUp).Row + 1
    
    ' combine G7 and G8 and copy into column A, next empty row
    ws.Range("A" & lRow) = ws.[G7] & " " & ws.[G8]
    ' copy the other cells into their ranges
    ws.Range("C6:F6").Copy ws.Range("B" & lRow)
    ws.Range("C7:F7").Copy ws.Range("F" & lRow)
    ws.Range("C8:F8").Copy ws.Range("J" & lRow)
    ws.Range("C9:F9").Copy ws.Range("N" & lRow)
    ws.Range("C10:F10").Copy ws.Range("R" & lRow)
    ws.Range("C11:F11").Copy ws.Range("V" & lRow)
    ws.Range("C12:F12").Copy ws.Range("Z" & lRow)
    ws.Range("G6").Copy ws.Range("AD" & lRow)
    ws.[A1].Select
    End Sub
    
  3. Feche o VBE

  4. Na sua planilha, insira um botão ou uma forma. Clique com o botão direito do mouse na forma e selecione "Atribuir macro". Selecione a macro chamada "copyRow"

  5. Na coluna A, coloque algum texto em uma célula para marcar o início da sua tabela de dados. Em seguida, clique no botão e os valores atuais da tabela e os intervalos nas linhas de 6 a 12 serão copiados para a próxima linha vazia.

Este cenário baseia-se no pressuposto de que cada nova linha de dados terá algum valor em G7 e G8, portanto, cada linha na tabela abaixo terá um valor na coluna A.

    
por 22.04.2013 / 11:10