Colunas de incremento do Excel VBA

0

Estou tentando combinar várias colunas de comprimentos variados em uma coluna em outra folha para permitir vlookups dessa coluna.

Eu posso incrementar a primeira coluna facilmente, mas estou tendo problemas para passar para a próxima coluna.

Abaixo está o código com o qual eu estava trabalhando. Eu estou tentando usar a identificação de células para incrementar o número da coluna, mas estou recebendo um aplicativo definir ou objeto definir erro 1004.

Sub TestTwo()
   Sheets("Transposed").Activate
   Dim row As Double

   row = 3

  'Do Until Sheets("Transposed").Range("B" & row).Value = ""
   Do Until Sheets("Transposed").Range(Cells(row, "B")).Value = ""

  Sheets("OneList").Range("B" & row - 1).Value = Sheets("Transposed").Range("B" & row).Value
row = row + 1

Loop


End Sub

O primeiro faz até que a linha seja comentada porque estou tentando fazer com que o identificador de células funcione antes de tentar incrementar.

O que estou fazendo de errado?

    
por user2957915 18.04.2016 / 16:51

2 respostas

4

Range () está procurando por um endereço ou um intervalo de células. Use as células () por si só:

Do Until Sheets("Transposed").Cells(row, "B").Value = ""

O intervalo não gosta de uma única referência de células ().

    
por 18.04.2016 / 16:55
2

Scott está exatamente correto (+1). Mas, eu abordaria esse problema de maneira um pouco diferente de você com For loops. Dessa forma, você pode ser mais preciso e acompanhar tudo o que acontece se precisar aumentar de tamanho

Option Explicit
Sub CombineColumns()
    Dim sourceColumns As Long
    Dim lastRow As Long
    Dim combinedRow As Long
    combinedRow = 1
    Dim sourceRows As Long

    For sourceColumns = 2 To 4 'B, C, D or whatever your range is
        lastRow = Cells(Rows.Count, sourceColumns).End(xlUp).Row
        For sourceRows = 1 To lastRow
            Sheet2.Cells(combinedRow, 1) = Cells(sourceRows, sourceColumns)
            combinedRow = combinedRow + 1
        Next
     Next sourceColumns
End Sub
    
por 18.04.2016 / 18:54