2013-03-22 2 views
0

Excel 워크 시트, InsertRow에 대한 행 인덱스를 결정한 후 VB.net을 사용하여 16 행을 삽입하고 싶습니다. 변경 사항이 있으면 COM 추가 기능을 작성합니다. 내가 VB.net에서이 작업을 수행 할 수있는 방법을 찾을 수 없습니다Vb.Net Com 추가 기능이있는 Excel 시트에 여러 행 삽입

... 
Dim InsertRow as String 
... 
Dim ContractForm As Worksheet 
Set ContractForm = Sheets("Lab Contracts") 
    ContractForm.Select 
    ContractForm.Rows(InsertRow & ":" & InsertRow).Select 
    Range(Selection, Selection.Offset(8, 0)).EntireRow.Insert 

: VBA에서 나는 통해이 작업을 수행 할 것입니다. 나는 시도했다 :[(InsertRow ":"InsertRow)의 모든 경우에 대해] 올바른 구문이 아닌 경우에 대비하여 ("47:47") 및 (InsertRow) 시도했다.

... 
    ContractSheet.Rows(InsertRow ":" InsertRow).Select() 
    ContractSheet.Rows.Insert() 
    ... 

및 ContractSheet.Rows는 ("47:47")은.() ContractSheet.Range를 ("47:47")를 선택합니다. EntireRow.Insert() 및 ContractSheet.Rows (InsertRow를 참조). (":"& InsertRow를 InsertRow를 &) N 들어 .rows.insert (xlDown) 다음과 ContractSheet.Rows (InsertRow를) ALL 기타 사항 서보 -OFF() = 1) (n = 1 내지 16 ContractSheet.Range하는 선택 받는 사람에게 ContractSheet.Selection.Insert() 다음

나는 계속할 수 있지만 도움이 될 것이라고는 생각하지 않습니다. (저는 항상 한 시간 전에 여기에서 묻기 전에 한 시간 이상 노력했습니다). 어떻게 진행되는지에 따라 다음 오류 중 하나가 발생합니다.

HResult : 0x800A03EC; 또는

HResult 0x80020005; 또는

시트에서 대상을 벗어날 수 없습니다.

도움을 주시면 감사하겠습니다.

답변

1

해야 할 일과해야 할 일이 없으면 가장 좋은 방법은 avoid Select statements입니다. 따라서 VBA에서 기초 작업을 다시 수행하려면 다음을 수행해야합니다.

Sub test() 
Dim InsertRow As Long 
Dim ContractForm As Worksheet 

InsertRow = "5" 
Set ContractForm = Sheets("Lab Contracts") 
ContractForm.Rows(InsertRow).Resize(8).Insert xlShiftDown 
End Sub 

VB.Net의 경우 거의 동일합니다. (xlShiftDown 인수는 VB 또는 VBA에서 불필요한 것으로 추측됩니다.)

Imports Microsoft.Office.Interop 

Sub test() 
    Dim ContractForm As Excel.Worksheet 
    Dim InsertRow As Int32 

    ContractForm = Application.ActiveWorkbook.Worksheets("Lab Contracts") 
    InsertRow = 5 
    ContractForm.Rows(InsertRow).Resize(8).insert() '(Excel.XlInsertShiftDirection.xlShiftDown) 
End Sub 
+0

방금 ​​16 줄을 말한 것으로 나타났습니다. 내 코드는 8 가지입니다. –

+0

굉장히 고마워요! 나는 MSDN에서 행을 읽으며 Google을 읽으며 크기 조정을 보지 못했습니다. 내가 그걸 어떻게 놓쳤는 지 모르겠다. 나는 선택을 피하기 위해 내 자신의 시행 착오에서 벗어난 figgured 있었는데, 나는이 경우 가능했다는 것을 몰랐다. –