기존 목록 (Col B)에 값을 추가하는 매크로 (VBA/작성 코드 신규)를 작성하려고합니다. 값은 InputBox에 의해 정의 된 다음 사전 순으로 목록에 추가됩니다. 매크로를 작동시킬 수 있지만 전체 행 대신 범위에 셀을 추가하고 싶습니다.열 범위에만 셀 추가
내 스프레드 시트에는 열 A부터 K까지의 데이터가 있습니다.이 열은 '행'을 삽입하려는 영역입니다. 그러나 캐치가 있습니다. 열을 추가하지 않으려는 열 L에서 AF까지 다른 데이터 집합이 있습니다. 이것은 내가 완전한 행을 삽입 할 수 있기 때문에 내가 실패한 곳입니다.
이 방법이 있습니까? 삽입 할 위치를 선택하지 못하게하는 새로운 값의 위치 (알파벳순)에 따라 삽입이 수행되어야하는 것처럼 보이는 모든 메서드에서 실행되지 않았습니다. 나는 코드를보기 위해 매크로 기록을 시도했으나 그 값에 의해 정의 된 선택 때문에 그 입력을 조작 할 수 없었다.
여기 제가 지금까지 가지고있는 코드는 ... 제가 아직 배우고있는 것처럼 조금 clunky 수 있습니다.
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"를 추가하는 섹션을 조작하고 싶습니다. 내가 제안 할 수있는 곳에 대한 제안이나 조언은 많은 도움이 될 것입니다. 감사합니다.
tigeravatar - 많은 도움을 주셔서 감사합니다 !! 코드가 완벽하게 작동합니다. 코드를 간소화하여 불필요한 많은 선을 제거 할 수 있었던 점에 감사드립니다. 나는 VBA의 세계에 계속 적응하면서이 권고를 배우기 위해 이것을 자세히 공부할 것입니다. – Lazyeye
하나의 명확한 질문입니다. If/CountIf 함수와 Match를 비교하는 데 장단점이 있습니까? 나는 당신의 방법을 좋아하고 이것이 호감가는 것인가 아니면 좋은 코딩인지를 알고 싶어한다. 고마워! – Lazyeye
저는 Match보다 오류 발생이 훨씬 적기 때문에 Countif를 선호합니다. 그래서 뭔가 존재하는지 여부를 테스트하는 좋은 방법이라고 생각합니다. Match는 무언가가 어디에 있는지 알아야 할 때 유용합니다. 정확한 일치는 매우 오류가 발생하기 쉽기 때문에 피하려고합니다. 목록에서 어디로 가는지 알 필요가있는 곳과 같은 것이 좋을 것입니다. – tigeravatar