나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 안성진 (tjdwls972)

추천:  2
파일:     조회:  2152
제목:   유저폼 사용도중 워크시트 전환안되게 하기
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):

* 아래줄에 질문을 작성하세요 >>

일단 워크시트 여러개가 있습니다.
메인 시트에서 버트는을 누르면 유저폼을 띄우고 거기서 데이터를 입력하고  "저장"이라는 커맨드 버튼을 누르면  DB라는 명칭의 Worksheets에 사용자가 입력한 내용들이 차곡 차곡 쌓이는 겁니다.
그런데 "저장" 유저폼을 누르면 유저폼 뒤의 화면에 DB워크시트로 이동해서 DB내용이 뒤에 보입니다.
결론은 사용자가 유저폼을 사용하는 동안 유저폼 뒤에 화면이 하나의 워크시트에 고정되어 있기를 원합니다.

잘 설명이 되었는지 모르겠지만... 해결방법이 무엇일까요?
--------------------------------------------------------------------
Dim intRow As Long
Dim 표 As Range
Dim 오더번호1 As Range
Dim sht_DBPP As Worksheet

Set sht_DBPP = Worksheets("DB_PP")
Set 표 = sht_DBPP.Range("A1", Cells(Rows.Count, "A").End(xlUp))
Set 오더번호1 = 표.Find(what:=OrderNo2, lookat:=xlWhole)

' 생산계획 시트에서 선택된 리스트아이템의 오더넘버를 찾아서 행 넘버를 구한다.
  
  intRow = 오더번호1.Row

투입시간2 = TB_투입시간2.Value
투입수량2 = TB_투입수량2.Value
불량수량2 = TB_불량수량2.Value
불량코드2 = TB_불량코드2.Value
비고2 = TB_비고2.Value
생산수량2 = 투입수량2 - 불량수량2

  '생산계획 시트에 추가정보를 기입
    With sht_DBPP
     
      .Cells(intRow, 5).Value = 투입시간2
      .Cells(intRow, 13).Value = 투입수량2
      .Cells(intRow, 14).Value = 불량수량2
      .Cells(intRow, 15).Value = 불량코드2
      .Cells(intRow, 16).Value = 생산수량2
      .Cells(intRow, 17).Value = 비고2
      MsgBox "저장이 완료되었습니다."
    
    End With
End Sub
=============================================
조삿갓님이 말씀하신대로 코드 수정중 아래에서 문제가 발생했습니다.
Set 표 = sht_DBPP.Range("A1", Cells(Rows.Count, "A").End(xlUp))

이부분에서 오류가 발생합니다. 뭐가 잘못된걸까요?
 
[불량 게시물 신고]  
조삿갓그 커맨드버튼의 클릭이벤트 핸들러에 보시면
Worksheets("DB").Activate 또는 Worksheets("DB").Select
명령이 있을 겁니다.
이걸 With  Worksheets("DB") 명령으로 고칩니다.
그리고, 입력한 내용을 저장하는 명령 곳곳에
Cells 개체나 또는 Range 개체가 좌변에
저장할 값(수식)이 우변에 있는 등식이 여러 개 있겠지요.
그것들마다 찾아다니면서 그 개체 앞에 .을 하나씩 찍어주세요.
예를들면 Cells(r, c) = 값 명령이 보이면 이걸
.Cells(r, c) = 값 으로 고쳐주는 겁니다.
그리고, End Sub 직전에
End With 명령을 추가하면 됩니다.

그래도 잘 모르겠으면.. 그 이벤트핸들러 부분 코드를
여기에 올려서 질문해 보세요.
03-20 (00:08)
삭제 ■신고
안성진Set 표 = sht_DBPP.Range("A1", sht_DBPP.Cells(Rows.Count, "A").End(xlUp))
이렇게 하니깐 해결됬네요.

조삿갓님 댓글 감사드립니다.!!!
03-20 (11:31)
삭제 ■신고
조삿갓제대로 찾으셨네요.
또는 With 명령을 아예 두 번째 Set 명령 앞으로 옮겨주면
Set 표 = .Range("A1", .Cells(Rows.Count, "A").End(xlUp))
로 생략할 수 있습니다.
원리는 동일합니다.
03-20 (11:49)
삭제 ■신고
        
  

작성일 : 2018-03-19(14:39)
최종수정일 : 2018-03-20(09:12)