既存のリスト (列 B) に値を追加するマクロ (VBA の新規作成/コードの作成) を作成しようとしています。値は 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
マクロは、私が指示したことを実行していることに気づきました。列 A:K の範囲にのみ追加する何かで「EntireRow」を追加するセクションを操作したいと思います。どこから始めればよいかについての提案や指針をいただければ幸いです。ありがとう!