如果标题包含“ * FFT目标”,则需要插入2列。我找到了这段代码,但是,它不会移至包含“ FFT目标”的下一列,而是将两行插入标题匹配的第一列之前。
我当前拥有的表头是:
英语FFT目标 英语教师评估 英文EFG 数学FFT目标 数学老师评估 数学EFG
我需要的是
[空白列] [空白栏] 英文FFT目标 英语教师评估 英文EFG [空白栏] [空白栏] 数学FFT目标 数学老师评估 数学EFG
我的代码是:
Dim A As Range
Dim lc As Long
Dim i As Long
Set A = Rows(1).Find(what:="*Target", LookIn:=xlValues, lookat:=xlPart)
lc = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 2 To lc
If A Is Nothing Then Exit Sub
A.Resize(, 2).EntireColumn.Insert
Next i
不幸的是,此代码将所有列插入到英语FFT目标之前,而不是继续前进,并在包含FFT目标的下一列之前插入列。
任何帮助将不胜感激。
谢谢
答案 0 :(得分:2)
我认为这可以帮助您:
Option Explicit
Sub Insert()
Dim LastColumn As Long, i As Long, Position As Long
With ThisWorkbook.Worksheets("Sheet1")
'Get the last column of Sheet 1, row 1
LastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
For i = LastColumn To 1 Step -1
Position = InStr(1, .Cells(1, i), "FFT Target")
If Position <> 0 Then
.Range(.Cells(, i), .Cells(, i + 1)).EntireColumn.Insert
End If
Next i
End With
End Sub
答案 1 :(得分:1)
如果您想坚持使用Find
。在插入列时,需要一点点麻烦才能检查您是否没有回收先前找到的值,并且需要设置搜索方向。设置其他参数也是一种好习惯。
但是,我认为错误1004的方法在这里更有意义。
Sub x()
Dim A As Range
Dim lc As Long
Dim i As Long
Dim s As String
Set A = Rows(1).Find(What:="Target", after:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, _
SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False)
If Not A Is Nothing Then
s = A.Address
Do
A.Resize(, 2).EntireColumn.Insert
s = Range(s).Offset(, 2).Address
Set A = Rows(1).FindNext(A)
Loop Until A.Address = s
End If
End Sub