2014-05-13 3 views
1

내가 확인란이 하위런타임 오류 '1004': '_Worksheet'개체의 방법 '범위'

Sub CheckBox7_Click() 
If ws1.Shapes("Check Box 7").OLEFormat.Object.Value = 1 Then 
ws2.Range(comment).Offset(0, 2).Value = "1" 
Else 
ws2.Range(comment).Offset(0, 2).Value = "0" 
End If 
End Sub 

를 사용하여 표시 할 때 셀에 쓰기를 시도하지만 단지를 열면하고 실패 시트 및 체크 상자를 클릭하십시오. 런타임 오류 '1004'가져 오기 : 메서드 '범위' '_workheet'개체의 오류가 실패했습니다.

나는 모듈의 상단에있는 변수를 정의 :

Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim comment As String 
Dim rown As Integer 

그리고 통합 문서를 열 때 나는 변수를 설정 :

, 나에게 이상한 무엇
Private Sub Workbook_Open() 
rown = 3 
comment = "F" & rown 
Set ws1 = ThisWorkbook.Sheets("Rating test") 
Set ws2 = ThisWorkbook.Sheets("Comments test") 
End Sub 

I 첫번째 A를 누르 경우 단추를 모듈에서 다음 코드와 함께 사용하면 Workbook_open 이벤트에 넣은 코드가 같지만 더 이상 오류가 발생하지 않습니다.

Sub First_Comment() 
Set ws1 = ThisWorkbook.Sheets("Rating test") 
Set ws2 = ThisWorkbook.Sheets("Comments test") 

    rown = 3 
    comment = "F" & rown 

End Sub 

도움 주셔서 감사합니다, 나는 VBA 초보자입니다!

+0

를 사용해야 그의 범위를 벗어나 있기 때문에 자신의 변수에서 작동합니다 Public로 전역 변수를 선언해야 'Workbook_open'은 어디에서 정의 했습니까? –

+0

Workbook_Open Sub가 실행 중입니까? 그렇다면 "ThisWorkbook"("Microsoft Excel Objects"아래)에 있어야하며 다른 모든 코드도 있어야합니다. – EngJon

+0

예 WOrkbook_Open은 "ThisWorkbook"("Microsoft Excel Objects"아래)에 정의되어 있습니다. 다른 코드는 동일한 VBA 프로젝트에서 Module1의 Module1에 있습니다. Workbook_Open Sub는 workbook_open에 "msgbox comment"를 추가 할 때 "F3"과 함께 msgbox를 보여주기 때문에 실행됩니다. – Mustika

답변

1

당신은 그렇지 않으면 Workbook_Open 만들고 그들이

Public ws1 As Worksheet 
Public ws2 As Worksheet 
Public comment As String 
Public rown As Integer 
+0

감사합니다. 문제가 해결되었습니다! – Mustika

+2

워크 시트 이름에 Public 변수를 사용하는 것은 좋은 해결책이 아닙니다. 바로 Sub에 직접 적용하는 것입니다. – brettdj

0

당신은 ws1 직접

Sub CheckBox7_Click() 
Set ws1 = ThisWorkbook.Sheets("Rating test") 
If ws1.Shapes("Check Box 7").OLEFormat.Object.Value = 1 Then 
ws2.Range(comment).Offset(0, 2).Value = "1" 
Else 
ws2.Range(comment).Offset(0, 2).Value = "0" 
End If 
End Sub 
+0

워크 시트 이름에 Public 변수를 사용하는 것이 좋지 않은 이유는 무엇입니까? 내 프로젝트 전체에서 워크 시트를 여러 번 참조하고 싶습니다. 코드를 복잡하게 만들 때마다 설정해야하는 경우입니다. – Mustika

+0

개체가 다른 곳에서 실수로 사용되었을 수 있습니다. 이와 같은 간단한 응용 프로그램의 경우 글로벌하게 이동할 필요가 없습니다. – brettdj