2013-10-01 1 views
0

VBA를 사용하여 추가 기능을 만들었습니다.이 기능은 계산이 포함 된 통합 문서입니다. 추가 기능에는 액세스 데이터베이스에서 관련 정보를 추출하고 통합 문서를 채우는 userform이 있습니다. 데이터가 채워지면 계산이 Sheet1에서 수행됩니다. 추가 기능 워크 시트에서 워크 시트 "Sheet1"붙여 넣기 - 추가 기능 매크로를 실행하는 새 통합 문서에합니다.Excel 추가 기능에서 워크 시트를 선택하여 VBA 매크로를 실행하십시오.

그러나 추가 기능을 실행하면 워크 시트가 숨겨져 내 데이터가 업데이트되지 않는 것처럼 보입니다. 이 오류가 발생합니다 : "런타임 오류 '1004': '_Global'개체의 '워크 시트'메서드가 실패했습니다".

누군가 필요한 계산이 수행되는 워크 시트가있는 추가 기능을 사용하는 방법을 알려 줄 수 있습니까?

흥미로운 부분은 Excel에서 추가 기능 목록에서 제거한 후에 추가 기능을로드하면 완벽하게 실행됩니다. 그러나 매크로를 다시 실행하면 워크 시트가 숨겨져 동일한 오류가 나타납니다. 나는 VBA에 상당히 새로운 것이므로 어떤 제안이라도 인정 될 것입니다!

편집

코드 :.

Private Sub OptionOK_Click() 'On selecting OK from userform 
    Dim ws1 As Worksheet 
    Sheets("Sheet1").Visible = True 
    Set ws1 = Worksheets("Sheet1") 

'User Form Validation 
    If Trim(Me.cboData.value) = "" Then 
    Me.cboData.SetFocus 
    MsgBox "Please complete the form" 
    Exit Sub 
    End If 

'copies data to given cell in excel  
    ws1.Range("A1").value = Me.cboData.value 

'To copy selection from "Sheet1" into new workbook 
Workbooks("myaddin.xlam").Sheets(1).Copy 
End Sub 

나는에 ...> 시트 ("Sheet1의")가 표시 = 참 오류가 발생합니다.

답변

3

방금 ​​추가 기능 VBA 코드에서 "ThisWorkbook"을 사용해야한다는 것을 알았습니다. 통합 문서 내에서

Set ws1 = ThisWorkbook.Sheets ("Sheet1")

VBA 코드는 추가 내부 시트 또는 범위에 참조 할 "에서 ThisWorkbook"를 사용합니다.

0

어떤 시트인지 알고 추가 기능 코드에 액세스 할 수 있으면 오류가 발생한 줄 앞에 표시되는지 확인하십시오.

Sheets("Sheet3").Visible = True 

코드에서 숨겨진 시트를 계속 참조 할 수 있기 때문에 다른 문제가 있다고 생각됩니다.


는이 라인이 올바른지 확인 위치 :

Workbooks("myaddin.xlam").Sheets(1).Copy 

당신이 통합 문서의 시트의 위치를 ​​참조하는 현재 시트의 이름을 참조되기 전에.

+0

고맙습니다. 시도해 보았습니다. 나는 워크 시트 워크 시트 ("Sheet1의")으로 희미한 WS1이 보이는 = 사실 설정 WS1은 = 워크 시트 ("Sheet1의")는 이 오류가 얻을 :. 범위를 초과 런타임 오류가 9 첨자. 온라인으로도 검색했지만 관련 솔루션이 보이지 않습니다. – VBAlearner

+0

편집 해 주셔서 감사합니다. cbo는 userform의 콤보 박스입니다. me.cboData는 액세스 데이터베이스를 사용하여 목록을 구성하는 콤보 상자를 나타냅니다. – VBAlearner

+0

예 워크 시트 ("Sheet1") 또는 워크 시트 (1)을 참조 할 수 있다고 생각합니다. 앞서 언급 한 것처럼 추가 기능은 제거한 후 Excel에 다시 설치하면 완벽하게 실행됩니다. 처음으로 매크로를 실행하면 내게 끊깁니다. – VBAlearner