2011-09-18 6 views
0

셀을 두 번 클릭하면 일부 수식이있는 셀 아래에 새 행이 삽입되는 매크로를 작성하려고합니다. 중요한 점은 셀을 다시 두 번 클릭하면 이전에 삽입 된 행의 수식이 올바른 인덱스로 업데이트된다는 것입니다.excel : 행 업데이트 수식을 삽입하십시오.

예를 들어 아래 코드에서 A1을 두 번 클릭하면 두 번째 행에 수식 = B2 + 1이 삽입됩니다. 다시 두 번 클릭하면 두 번째 행에 동일한 내용이 삽입됩니다. 이제 2 번째 줄이 3 행으로 이동하므로 수식 A3에서 = B3 + 1이어야합니다.

Option Explicit 

Const MYRANGE As String = "A:A" 

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 
    'If Sh.Name <> "Sheet1" Then Exit Sub 
    If Target.Cells.Count > 1 Then Exit Sub 
    If Intersect(Target, Sh.Range(MYRANGE)) Is Nothing Then Exit Sub 
    Cancel = True 
    Target.Rows(2).Insert 
    Dim newRow As Range 
    Set newRow = Target.Rows(2) 
    Dim rowIndex As Long 
    rowIndex = newRow.row 
    newRow.Cells(1, 1).Formula = "=B" & rowIndex & "+1" 
End Sub 

UPDATE : Target.Offset(1).EntireRow.Insert-Target.Rows(2).Insert이 문제를 해결 변경 여기

내가 지금까지 가지고있는 코드입니다. 오프셋과 행과 다른 점에 대한 설명을 열어 두십시오 (EntireRow 속성은 행 (2)에 존재하지 않습니다)

+1

오프셋을 사용하면 좋은 해결책을 발견했습니다. 행 (2)에는 이미 전체 행이 있으므로 EntireRow 속성이 없습니다. 오프셋이 무엇인지 알아 보려면 Google 또는 도움말을 사용해보십시오. 단순히 행과 열을 기준으로 한 셀의 오프셋이므로 newRow를 두 번 클릭 한 셀 아래에있는 셀 하나를 삽입하는 행과 같게 설정해야합니다. –

답변

0

이 코드를 동일한 결과에 대해 4 줄 줄이면됩니다 (아래 참조)

코드가 대상 행과 그 아래에있는 셀을 업데이트하는 것입니다. 즉, 대상 위에있는 열 A 외부의 셀 수식은 업데이트되지 않습니다. 아마도 문제는 아니지만 언급할만한 가치가 있습니다. 전체 업데이트를 원한다면 항상 목표가 아닌 row2에 삽입하십시오.

Option Explicit 

Const MYRANGE As String = "A:A" 

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 
    If Target.Cells.Count > 1 Then Exit Sub 
    If Intersect(Target, Sh.Range(MYRANGE)) Is Nothing Then Exit Sub 
    Cancel = True 
    Target.Offset(1).EntireRow.Insert 
    Target.Offset(1).Formula = "=B" & Target.Row + 1 & "+1" 
End Sub