VBA For循环直到列为空问题

时间:2011-07-19 14:58:31

标签: vba excel-vba excel-2007 excel

我是VBA的新手,我正在尝试将其用于循环,但我认为我的“To”计数器是错误的。我希望它执行指定的操作,直到没有剩下的列可以剪切。

发生的事情是,我有一组水平数据(列“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

2 个答案:

答案 0 :(得分: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

改变活动细胞是没有意义的。它只会减慢您的代码速度。

答案 1 :(得分:1)

您可以使用内置的TRANSPOSE工作表功能来实现这一目标 - 请参阅here

如果您想使用VBA实现这一目标,那么正如Tiago Cardoso指出的那样,使用剪切和粘贴通常不是最佳解决方案。请考虑使用Cells对象的Worksheet方法,并跟踪您正在使用哪一列和哪一行。