我正在尝试编写一个宏(VBA/编写代码的新手),它将向现有列表(Col B)添加一个值。该值由 InputBox 定义,然后按字母顺序添加到列表中。我能够让宏工作,但是我想在一个范围内添加单元格而不是整行。
我的电子表格在 A 到 K 列中有数据。这是我要插入“行”的区域。但是有一个问题。我不想将行添加到 L 到 AF 列中的另一组数据。这是我失败的地方,因为我只能插入一个完整的行。
有没有办法做到这一点?我没有遇到任何似乎有效的方法,因为插入必须根据新值在列表中的位置(按字母顺序)进行,这会阻止我选择要插入的位置。我已尝试录制宏以查看代码,但由于选择由值定义,我无法操作该输入。
这是我到目前为止的代码......可能有点笨拙,因为我还在学习。
Sub Add_Project()
Dim NewProject As String, iRow As Long, ProjRng As Range, RowRng As Range
'The ProjRng MUST represent the project column!
Set ProjRng = Range("B:B")
'Defines the range of columns to add a row to
Set RowRng = Range("B:K")
'Create message box for user input on project name
NewProject = InputBox("Enter Project Name")
If NewProject = "" Then Exit Sub
'Determines if the New Project name already exists
iRow = Application.WorksheetFunction.Match(NewProject, ProjRng)
If Cells(ProjRng.row + iRow - 1, ProjRng.Column) = NewProject Then
MsgBox ("Project already exists")
Exit Sub
End If
'Inserts a new row with containing the new Project name
With Cells(ProjRng.row + iRow, ProjRng.Column)
.EntireRow.Insert
.Offset(-1, 0).Value = NewProject
End With
Exit Sub
End Sub
我意识到宏正在做我指示它做的事情。我想操作添加“EntireRow”的部分,该部分仅添加到 A:K 列的范围内。任何关于我可以从哪里开始的建议或指示将不胜感激。谢谢!