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

 dew (dewdrop)

추천:  2
파일:     2019년 작업현황_Ans.xls (2619.5KB) 조회:  1194
제목:   [RE]vba 에러가나네요
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

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

* 아래줄에 질문을 작성하세요 >> 
vba 에러가나네요 수정 가능하시면 부탁드립니다
==============[미르님 글에 대한 답변입니다]==============
워크북 이벤트함수중 Workbook_SheetChange 함수를 이요하는 것이 더 좋을 것 같네요....
유저함수를 사용하면 시스템에 부하가 많이 걸려 시간이 많이 소요됩니다.
따라서 아래와 같이 워크북내에 있는 모든시트에 적용할 수있는 워크북 이벤트 함수를 사용하는 것이 좋을 것 같습니다.
첨부 파일 참고하세요....

' 행번호가 3이상이고, D열의 값이 변경이 될때 발생하는 이벤트함수입니다.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Row < 3 Or Target.Cells.Count > 1 Then Exit Sub
    If Target.Column <> 4 Then Exit Sub
    
    Dim iTemp() As Integer
    
    Application.EnableEvents = False
    iTemp = GetUserValue(Target)
    With Target.EntireRow
        .Cells(1, "M").Resize(1, 2) = iTemp
        .Cells(1, "R").Resize(1, 2) = iTemp
        .Cells(1, "U") = iTemp(3)
    End With
    Application.EnableEvents = True
End Sub

Function GetUserValue(rTg As Range)
    Dim iX As Integer
    Dim sSoc As String
    Dim vStr, vX
    Dim iNum(1 To 3) As Integer     ' 규격 : 가로 X 세로 X 깊이
    
    sSoc = UCase(rTg.Value)                  ' 소문자를 대문자로 변경
    sSoc = Replace(Replace(Replace(sSoc, " X", "*"), "X ", "*"), "X", "*")
    vStr = Split(sSoc, "*")
    
    For iX = 0 To UBound(vStr)
        If iX > 2 Then Exit For
        iNum(iX + 1) = Val(vStr(iX))
    Next
    GetUserValue = iNum
End Function
 
[불량 게시물 신고]  
미르문제 해결해주셔서 감나합니다.01-28 (12:08)
삭제 ■신고
        
  

작성일 : 2019-01-28(09:55)
최종수정일 : 2019-01-28(09:55)
 


 ◎ 관련글

  제 목   작성자   날짜
vba 에러가나네요 미르 2019-01-26
[RE]vba 에러가나네요 dew 2019-01-28