Excel VBA:在所有列的左侧插入新列,直到最后一列

Excel VBA:在所有列的左侧插入新列,直到最后一列,excel,vba,Excel,Vba,我试图在从D开始的每一列旁边插入一列,我的问题是列的数量会改变,所以我需要识别代码中的最后一列 每当我运行下面的代码时,它似乎无法正确识别最后一列 Sub InsertColumnsv2() Dim iLastCol As Long Dim StartCell As Range Set StartCell = Range("A1") iLastCol = StartCell.SpecialCells(xlCellTypeLastCell).Column For colx

我试图在从D开始的每一列旁边插入一列,我的问题是列的数量会改变,所以我需要识别代码中的最后一列

每当我运行下面的代码时,它似乎无法正确识别最后一列

Sub InsertColumnsv2()
  Dim iLastCol As Long
  Dim StartCell As Range

  Set StartCell = Range("A1")

  iLastCol = StartCell.SpecialCells(xlCellTypeLastCell).Column

  For colx = 4 To iLastCol Step 2
    ActiveSheet.UsedRange
    iLastCol = StartCell.SpecialCells(xlCellTypeLastCell).Column
    Columns(colx).Insert Shift:=xlToRight
  Next colx
End Sub

当您在中间添加列时,
iLastCol
会发生变化,因此您需要向后循环,使用
Step-1
,因为您每一步都要添加一列

注意:不要依赖
ActiveSheet
,而是使用
和工作表(“您的SheetName”)
完全限定您的
单元格
对象

选项显式
子InsertColumnsv2()
Dim iLastCol和colx一样长

对于工作表(“Sheet1”)当您在其间添加列时,
iLastCol
会发生变化,因此您需要向后循环,使用
Step-1
,因为您每一步都要添加一列

注意:不要依赖
ActiveSheet
,而是使用
和工作表(“您的SheetName”)
完全限定您的
单元格
对象

选项显式
子InsertColumnsv2()
Dim iLastCol和colx一样长

使用工作表(“Sheet1”)”解决插入问题的更好方法是从头到尾

Sub InsertColumnsv2()
  Dim iLastCol As Long
  Dim StartCell As Range

  Set StartCell = Range("A1")

  iLastCol = StartCell.SpecialCells(xlCellTypeLastCell).Column

  For colx = iLastCol  To 4 Step -1
      Columns(colx).Insert Shift:=xlToRight
  Next colx
End Sub

解决插入问题的更好方法是从头开始

Sub InsertColumnsv2()
  Dim iLastCol As Long
  Dim StartCell As Range

  Set StartCell = Range("A1")

  iLastCol = StartCell.SpecialCells(xlCellTypeLastCell).Column

  For colx = iLastCol  To 4 Step -1
      Columns(colx).Insert Shift:=xlToRight
  Next colx
End Sub

试着倒着运行它

Sub InsertColumnsv2()
    Dim iLastCol As Long
    Dim colx As Long

    iLastCol = Cells(1, Columns.Count).End(xlToLeft).Column

    For colx = iLastCol To 4 Step -1
        Columns(colx).Insert Shift:=xlToRight
    Next colx
End Sub

试着倒着运行它

Sub InsertColumnsv2()
    Dim iLastCol As Long
    Dim colx As Long

    iLastCol = Cells(1, Columns.Count).End(xlToLeft).Column

    For colx = iLastCol To 4 Step -1
        Columns(colx).Insert Shift:=xlToRight
    Next colx
End Sub

由于未将
用于工作表(…
语句,请从
.Columns(colx)
>中删除
,这将引发运行时错误,因为未将
用于工作表(…
语句,请从
.Columns(colx)中删除
>>这将引发运行时错误。您应该使用希望此代码使用的工作表限定所有
,不要依赖
ActiveSheet
(请阅读我下面的答案以了解原因)您应该使用希望此代码使用的工作表限定所有
,不要依赖
ActiveSheet
(请阅读下面的答案以了解原因)