Página 1 de 1

Macro VBA - Copiar linhas de uma determinada coluna.

Enviado: 17 Ago 2020 às 19:57
por ejotad
Estou desenvolvendo uma macro a partir do Corel Draw... Eu sei que aqui é fórum de Excel, mais está relacionado.

A ideia da macro é contar as colunas de uma certa área que eu tenha selecionado, e para cada coluna que tiver selecionado ele me adiciona um item na ListBox. E todas as linha da coluna (dentro da região selecionada) ele copia os valores e cola em um TextBox.

A primeira parte (para cada coluna na região selecionada, adiciona um novo item no ListBox) eu consegui fazer.
O problema está em copiar as as linhas da coluna e colar no Listbox.

Ao invés da ação só copiar a partir da área seleciona, somente a coluna (i), ele está começando a partir do A1.

Segue o código.
Código: Selecionar todos
Private Sub CommandButton3_Click()
 Dim Exl As excel.Application, Wg As Workbook, Pg As Worksheet, R As Range
 Dim Mf As Variant, lastColumn As Long, lastRow As Long, nLastCol As String, i As Long
 Dim ind As Integer
 
    Set Exl = GetObject(, "Excel.Application"): Exl.Visible = True
    Set Wg = Exl.ActiveWorkbook
    Set Pg = Wg.ActiveSheet:  Set R = Pg.Application.Selection

    'Cont as colunas
    lastColumn = R.columns.Count
    'Conta as linhas
    lastRow = R.Rows.Count
      
'Para cada coluna ele add listbox
For i = 1 To lastColumn

'Alterações do listbox
Me.ListBox1.AddItem i
Me.ListBox1.ListIndex = i
ind = orgLists.Count
Me.ListBox1.Column(1, ind) = "NÃO"

'''''''''Copia as linhas da coluna (i)
nLastCol = Split(R.Cells(, i).Address, "$")(1)
Mf = Pg.Range("A1:" & nLastCol & lastRow).Copy
Me.TextBox1.Paste

Next i

'Ultima modificação da ListBox
Me.ListBox1.RemoveItem "1"
Me.ListBox1.ListIndex = 0

End Sub
O TextBox só exibe as coisas que foram colado quando o item da ListBox estava ativado.

Desde já agradeço, se alguém conseguir me ajudar fico grato. :D

Anexei uma imagem para explicar melhor, oque eu não conseguir dizer.
Imagem

Re: Macro VBA - Copiar linhas de uma determinada coluna.

Enviado: 18 Ago 2020 às 03:13
por AfonsoMira
Boas veja se este código lhe ajuda.
Alguma dúvida é só chamar. :)
Código: Selecionar todos
'---------------------------------------------------------------------------------------
' Autor.....: Afonso Mira
' Contato...: am.afonsomira@gmail.com
' Data......: 18/08/2020
' Descricao.: Macro para carregar seleção em listbox
'---------------------------------------------------------------------------------------
Private Sub CommandButton3_Click()



Dim ws                                 As Worksheet
Dim rng                                As Range
Dim i                                  As Long
Dim j                                   As Long
Dim rw                                  As Long
Dim Myarray()                          As String

    'Nome da planilha
    Set ws = Sheets("Planilha1")

    Set rng = Application.Selection
    With Me.ListBox1
        .Clear
        .ColumnHeads = False
        .ColumnCount = rng.Columns.Count

        ReDim Myarray(rng.Rows.Count, rng.Columns.Count)

        rw = 0

        For i = 1 To rng.Rows.Count
            For j = 0 To rng.Columns.Count
                Myarray(rw, j) = rng.Cells(i, j + 1)
            Next
            rw = rw + 1
        Next

        .List = Myarray
        .ColumnWidths = "50;50;50;50;50"
        .TopIndex = 0
    End With
End Sub

Re: Macro VBA - Copiar linhas de uma determinada coluna.

Enviado: 11 Dez 2020 às 16:35
por ejotad
Consegui fazer oque pretendia.;
Seu código me ajudou muito.
Mas no final, oque eu precisava era que copia-se a coluna toda e cola-se no listbox.
Resolvi com
R.Columns(i).copy