2011-07-19 5 views
3

Я новичок в VBA, и я пытаюсь это сделать, но я думаю, что мой счетчик «To» ошибочен. Я хочу, чтобы он выполнял указанные действия до тех пор, пока не осталось больше столбцов для вырезания.VBA За цикл до тех пор, пока столбец не пуст.

Что происходит, у меня есть горизонтальный набор данных (столбец «Т» до «EV»), который я нарезаю и вставляю по вертикали на столбец S. Это работает, но я все еще получаю эту ошибку:

я получаю:

ошибка выполнения '1004':

Этот выбор не является действительным. Существует несколько возможных причин:

  • Копирование и вставка областей не могут пересекаться, если они не имеют одинаковый размер и форму.
  • Если вы используете Создать из команды выбора, строки или столбца, содержащего предложенные имена не будут включены в (отрезает здесь)

Код:

Dim x As Integer 

For x = 0 To ActiveCell.CurrentRegion.Columns.Count 
    ActiveCell.Select 
    ActiveCell.Offset(0, x).Select 
    Range(Selection, Selection.End(xlDown)).Select 
    Selection.Cut 
    Range("S3000").Select 
    ActiveCell.End(xlUp).Select 
    ActiveCell.Offset(1, 0).Select 
    ActiveSheet.Paste 
    Range("T11").Select 

Next x 

ответ

1

Не тестировался, написано прямо здесь, но он должен работать ...

dim c as range 
for each c in range("t1").currentregion 
    range("s3000").end(xlup).offset(1,0)= c.value 
    c.clear 
next c 

Нет смысла менять активную ячейку. Это просто замедляет ваш код.

+0

Пробовал, но получаю, ошибка времени выполнения '438': объект не поддерживает это свойство или метод. Он выделяет строку «range» («s3000»). End (xlup) .offset (1,0) .paste »при отладке – Leon

+1

В коде @iDevlop есть запятая, где (я считаю) у нас должна быть точка. –

+0

Я изменил запятую на точку. Я поймал ошибку. спасибо, хотя – Leon

1

Вы можете просто использовать встроенную функцию транспонирования листа для достижения этой цели - см here

Если вы хотите, чтобы достичь этого с помощью VBA, то, как Тьяго Кардозо отметил, используя вырезать и вставить, как правило, не самый лучший решение. Рассмотрите возможность использования метода Cells объекта Worksheet и отслеживания того, с каким столбцом и с какой строкой вы работаете.

Смежные вопросы