|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(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 |
|