2013-11-14 3 views
0

저는 프로그래머가 아니지만 하루 종일 진행되는 프로세스에 대한 워크 시트를 만들 것을 요구하면서 프로그래머는 아니지만 그 역할을 수행하고 있습니다. 따라서 미리 사과하지 않아도됩니다. 올바른 용어로 질문을하고, 마치 내가 멍청한 놈에게 말하고있는 것처럼 대답을 무너 뜨려야 만한다면.한 번에 두 장의 행을 추가하는 VBA 코드

질문 : 사용자가 작업중인 활성 시트에 행을 추가 할 수있는 버튼을 설정하고 싶습니다. 배경에서 스프레드 시트는 추가 된 것과 같은 위치에있는 같은 통합 문서의 다른 시트에 행을 추가하려고합니다. (두 시트는 ​​이전 달의 정보가있는 비 활성 워크 시트에서만 동일합니다.)이 작업을 수행하는 데 필요한 이유는 활성 워크 시트가 비활성 시트에서 데이터를 가져오고 같은 행 번호를 유지하려고하기 때문입니다. 두 시트 모두 같은 행에있는 데이터와 함께 있으므로 올바른 데이터를 가져옵니다.

조언 해 주셔서 감사합니다.

매크로 레코더 빠른 플레이에서
+0

행이 맨 위 행, 미리 결정된 행 또는 사용자를 기반으로 한 선택 항목에 추가됩니까? –

+0

이것은 두통처럼 들립니다. 누군가 행을 삭제하면 어떻게 될까요? 한 번에 여러 행을 제거하면 어떻게 될까요? 코드를 제외하고 행을 삽입하거나 제거 할 수 없도록 페이지를 잠글까요? 참조가 이미있는 경우 두 페이지를 완벽하게 동기화하면 안됩니다. Excel은 행 삽입시 참조 주소를 업데이트합니다. –

+0

조 - 사용자 선택에 기반합니다. 하나의 광고 항목 아래에서 예산을 분석하기 위해 예산 워크 시트에 줄을 추가 할 수 있습니다. – user2993438

답변

0

, 다음 코드 왼쪽 해요 : 나는 ActiveSheet이 재산 index을 가지고 볼 수있는 디버거 빠른 플레이로 그런

Sub insertRow() 
    Dim insertBeforeRow 
    insertBeforeRow = 1 

    ActiveSheet.Rows(insertBeforeRow).Select 
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

    ' The following two lines are the same - both active the second sheet in the book 
    Sheet2.Activate 
    Sheets(2).Activate 

    ActiveSheet.Rows(insertBeforeRow).Select 
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
End Sub 

- 이것이 Sheets 컬렉션의 색인 (ActiveSheet을 클릭하고 오른쪽 클릭하여 시계 추가를 선택하십시오.)

나는 이것을 내놓으려고합니다. (오류를 체크하지 말고, 일부를 추가하는 것을 잊지 마십시오!) - 통합 문서의 마지막 시트를 선택하고 실행하면 두려워 당신은 당신의 목적에 맞는 방식으로 함께 두 개의 조각을 용접 할 수

Sub getActiveSheet() 
    Dim curSheetIndex, numSheets, secondSheetIndex 

    curSheetIndex = ActiveSheet.Index 
    secondSheetIndex = curSheetIndex + 1 

    ' the following two lines are equivalent - both operate on the Active Sheet 
    ActiveSheet.Cells(1, 1) = "Active Sheet" 
    Sheets(curSheetIndex).Cells(1, 1) = "Active Sheet" 

    ' finally, operate on the following sheet 
    Sheets(secondSheetIndex).Cells(1, 1) = "Sheet following Active Sheet" 
End Sub 

오류 사운드와 메시지 상자를) "어 - 어 더는 더미하지 않습니다." 사용 가능한 기능 및 속성을 발견 할 때 VBA 환경의 디버거는 유용합니다. 솔직히 말해서 VBA에서 이와 같은 작은 작업을 상당히 즐긴 이유 중 하나입니다. 디버거와 Excel의 객체 모델에 대해 적어도 조금은 잘 알고있을 때 종종 효과를 얻는 것이 매우 쉽습니다.

0

귀하의 게시물을 다시 읽은 후에 찾고 싶다면 100 % 확신 할 수는 없지만 한 번만 알려 드리겠습니다.

Sub Button1_Click() 
    r0w = Selection.Row 
    c0l = Selection.Column 
    ThisWorkbook.Sheets("Sheet1").Cells(r0w, c0l).EntireRow.Insert 
    ThisWorkbook.Sheets("Sheet2").Cells(r0w, c0l).EntireRow.Insert 
End Sub 

내 마지막에는 작동합니다.

+0

내 시트에서 작동하지 않았습니다. 위 코드를 사용하는 게시 코드가 작동 중입니다 (거의) – user2993438

+0

어떤 오류가 발생합니까? 시트의 이름을 정확하게 지 었니? –

관련 문제