我写了一个宏,在列中搜索包含文本“AddCompany”的单元格,然后对于每个这样的单元格,将一个新行插入另一个工作表,然后复制并粘贴相邻单元格的值(包含名称)一个公司)进入那个新的行 .
在我的副本中,我使用单元格中的组成名称,“Test Company 1”通过“Test Company 4”来测试宏 . 宏正确插入4个新行,但只有最后一个公司,“测试公司4”被粘贴 . 它会被粘贴到错误的单元格中,位于新插入行的正下方 .
最后的结果是宏插入第9行到第12行,并将“Test Company 4”粘贴到已经包含名称(我不想更改)的第13行 .
我希望宏做的是为它找到的每个“AddCompany”插入一个“new”行(恰好是这个案例中的第9行以适应更大的表),然后将公司名称粘贴到相邻的单元格中,重复直到完成 . 新插入的第9行到第12行应该最终显示每个测试公司 .
任何帮助都感激不尽 .
谢谢,乔恩
Sub AddMoreCompanies()
Dim Table As Worksheet: Set Table = Worksheets(1)
Dim Notes As Worksheet: Set Notes = Worksheets(2)
Dim Accounts As Worksheet: Set Accounts = Worksheets(3)
Dim SandI As Worksheet: Set SandI = Worksheets(4)
Dim Report As Worksheet: Set Report = Worksheets(5)
Dim Entry As Worksheet: Set Entry = Worksheets(6)
Dim Issuer As Worksheet: Set Issuer = Worksheets(7)
Dim Col As Range: Set Col = Entry.Range("L5:L250")
Dim tCell As Range
Dim Target As Range: Set Target = Table.Range("D9")
For Each tCell In Col
If tCell.Value = "AddCompany" Then
'Inserts new row in the Table
Table.Rows("9:9").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Table.Rows("10:10").Copy
Table.Rows("9:9").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Table.Range("E10:I10").AutoFill Destination:=Range("E9:I10"), Type:=xlFillDefault
'copies text into target cell
Else
End If
If tCell.Value = "AddCompany" Then
Target.Value = tCell.Offset(0, 1).Value
Else
End If
Next tCell
'Target.Value = tCell.Offset(0, 1).Value
End Sub
1 回答
您缺少的是
Target
变量(定义为Set Target = Table.Range("D9")
)将向下移动并变为D10
,然后D11
(直到D13
)每次Insert
上面的新行 .要快速修复,请在复制值之前重新定义它 . 通过改变
成