2014-12-01 6 views
1

MS Word 2013에서 작업 중이며 명령 단추를 사용하여 Checkbox1에서 CheckboxN까지 선택을 취소하면 테이블에서 행을 프로그래밍 방식으로 삭제하려고합니다. 다음 단축 코드는 한 번 작동하며 (하나 이상의 행을 삭제할 수 있음) 코드가 여전히 삭제 된 확인란을 참조하기 때문에 초를 실행할 때 중단됩니다. 나는 기본적인 오류 처리를 시도했지만 성공적이지 못했다. 누구든지 코드를 여러 번 실행하고 후속 행/체크 상자를 삭제할 수 있도록 지원을 제공 할 수 있습니까? 이것이이 요청을 게시하기에 적합한 포럼이 아니라면 알려주십시오. 고맙습니다!삭제 된 확인란에 대한 VBA 오류 처리

Sub CommandButton1_Click() 
    If CheckBox1.Value = False Then 
     Selection.GoTo What:=wdGoToBookmark, Name:="Row6" 
     Selection.Rows.Delete 
    End If 
    If CheckBoxN.Value = False Then 
     Selection.GoTo What:=wdGoToBookmark, Name:="Row6" 
     Selection.Rows.Delete 
    End If 
End sub 
+0

이 확인란은 사용자 정의 폼에 있습니까? 아니면 테이블에 포함 된 콘텐츠 컨트롤입니까 (필자는 확실하다고 생각합니다). – Christina

+0

표의 콘텐츠 컨트롤 – crew11k

답변

0

그럼 여기서는 다른 접근 방법을 택할 것입니다. 명명 된 체크 박스에 의존하는 대신 모든 관련 체크 박스를 거꾸로 순환시키고 삭제할 행을 결정하십시오. 체크 박스가 삭제 될 행 내의 셀에 있다고 가정합니다. 이전에 언급했듯이 이동하는 동안 항목을 제거하게되므로 뒤로 이동하는 것이 중요합니다.

Sub checkChecks() 
Dim objTable As Table 
Dim objCC As ContentControl 
Dim i As Long 

Set objTable = ActiveDocument.Tables(1) 

For i = objTable.Range.ContentControls.Count To 1 Step -1 
    Set objCC = objTable.Range.ContentControls(i) 
    If objCC.Type = wdContentControlCheckBox Then 
     If objCC.Checked = False Then objCC.Range.Rows(1).Delete 
    End If 
Next i 

End Sub 

분명히 문제가되는 테이블을 격리 할 수있는 경우에만 작동하지만 너무 어렵지는 않습니다.