Excel 每次运行代码时,循环都应该从第二页的第一列开始

Excel 每次运行代码时,循环都应该从第二页的第一列开始,excel,excel-2010,vba,Excel,Excel 2010,Vba,每次我运行下面的代码时,应该首先将导入工作表中的第一列粘贴到组织工作表中的第一列。但是,由于某些原因,每次启动时,代码都会粘贴到Organizer中上次运行结束的列中。我需要告诉代码始终从组织表的第一列开始。我试图将b定义为1,但很明显,这与第4行冲突?请帮忙 For a = 1 To 60 If Application.WorksheetFunction.CountA(Excel.Sheets("Import_R").Columns(a)) > 0 Then Excel.Sh

每次我运行下面的代码时,应该首先将导入工作表中的第一列粘贴到组织工作表中的第一列。但是,由于某些原因,每次启动时,代码都会粘贴到Organizer中上次运行结束的列中。我需要告诉代码始终从组织表的第一列开始。我试图将b定义为1,但很明显,这与第4行冲突?请帮忙

For a = 1 To 60

If Application.WorksheetFunction.CountA(Excel.Sheets("Import_R").Columns(a)) > 0 Then

    Excel.Sheets("Import_R").Columns(a).Copy

   b = Excel.Sheets("Organise_R").UsedRange.Columns.Count

    Excel.Sheets("Organise_R").Select



    If Application.WorksheetFunction.CountA(Excel.Sheets("Organise_R").Columns(b)) > 0 Then b = b + 1


        Excel.Sheets("Organise_R").Columns(b).EntireColumn.Select
        Excel.ActiveSheet.Paste

        Excel.Application.CutCopyMode = False
        Selection.TextToColumns Destination:=Cells(1, b), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
                Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True

End If



Next a

如果代码总是从“组织”的第一列开始,那么为什么要使用下面的代码

b = Excel.Sheets("Organise_R").UsedRange.Columns.Count
为什么不呢

Excel.Sheets("Organise_R").ClearContents
b = 1

您是否考虑过清除组织者的内容?因为你显然想覆盖它们。只需调用
工作表(“Organize_R”).单元格。在进行for循环之前删除
。@Daniel Cook-我希望能给你一个大提示,并责骂我自己没有想到这一点。我已经清除了表格,但我没有想到要删除。不幸的是,恐怕我还没有做到。似乎在代码再次运行之前,b的最后一个值将被保存。@Daniel Cook的建议很好,但我相信您必须保存、关闭然后重新打开工作簿,以便UsedRange重置。@Exactabox-抱歉,可能我不清楚。导入工作表中的第一列将始终粘贴到Organize\R中的A列。然后执行“文本到列”操作,这通常会导致Ornaise\R中出现10个完整的列。导入工作表中的第二列将粘贴到Organize\R中的下一个可用列,即第11列,然后该过程继续。因此,我不想替换我刚刚输入的数据,我希望它查找下一个可访问的空列。此时,虽然它在旧运行结束的地方开始运行。如果在Z列上运行结束,则下一个运行将从AA开始,而不是A。您可以在循环开始之前放置行b=1。然后将b=Excel.Sheets(“organize_R”).UsedRange.Columns.Count移动到循环中的最后一行,恐怕就在“下一个a”之前。第一个循环如希望的那样粘贴到Organizer工作表的A列中,但第二个循环粘贴到OOU列中。在我的程序开始时,所有工作表都会被清除,在此循环之前,我会删除Organizer中的所有单元格,以确保b存储在以前运行的某个位置。您知道是否可以清除寄存器或其他东西吗?b不是从以前的运行中存储的。您的电子表格中有一些内容您无法获取。。。当您引用“UsedRange”时,它包括任何内容,甚至包括曾经更改过字体大小的空白单元格。(如上所述,在删除列之后,在确定新的UsedRange之前,您仍然需要保存、关闭并重新打开文件。)此外,由于您使用TextToColumns,如果您不能100%确定首先复制的内容,这可能会溢出到几十/数百列中。恐怕没有样品就没有更多的帮助了。我一定是瞎了。我第一次没注意到你提到usedrange。我走了,“发现”usedrange不能重置。重新启动工作簿无效。我在网上找到的任何旨在解决这个问题的代码都没有。最后,我只是删除了,然后又重新添加了工作表。感谢您的回复,并对延迟回复表示歉意!