Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Цикл VBA For до тех пор, пока столбец не будет пустым

Автор вопроса: LeonОтветов: 2

Я новичок в VBA, и я пытаюсь выполнить это для цикла, но я думаю, что мой счетчик "Кому" неверен. Я хочу, чтобы он выполнял указанные действия до тех пор, пока не останется столбцов, которые нужно вырезать.

Что происходит, так это то, что у меня есть горизонтальный набор данных (столбец от "T" до "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

excelvbaexcel-2007

Ответы

Ответ 1 · рейтинг 1 · Patrick Honorez

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

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

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

Ответ 2 · рейтинг 1 · barrowc

Для этого можно просто использовать встроенную функцию рабочего листа TRANSPOSE - см. здесь

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы