2016-08-16 2 views
0

내 코드는 nother 통합 문서에서 값을 가져 와서 다른 통합 문서에 붙여 넣습니다. 그러나 지금 내가 원하는 것은 마지막 3 자리 숫자를 제거하여 달러가 아닌 천 달러로 최종적인 숫자가되는 것입니다.변수를 수정하는 함수를 호출하는 방법

내 "DSA.Worksheet.Value ..."주위에 내 기능을 빌드하면 정상적으로 작동하지만 그 중 상당수가 소요되기 때문에 시간이 걸립니다. 나는 그런 식으로 전화를해도, 그것은 작품을 나던 DSA.worksheet 세포 내 함수를 호출 할 때 :

Call number_right (DSA.Worksheets(1).Range("G10").Value = Application.WorksheetFunction.Round (hello.Worksheets("getthis"").Range("I72").Value, -3) 



Sub test()  
DSA.Worksheets(1).Range("G10").Value = Application.WorksheetFunction.Round(hello.Worksheets("getthis").Range("I72").Value, -3) 

DSA.Worksheets(1).Range("G10").Value = Call number_right(DSA.Worksheets(1).Range("G10").Value) 

End Sub 


Function number_right(n As Variant) As Variant 
If Len(n) > 3 Then n = Left((n), Len(n) - 3) 
End Function 
+0

는 것을 쓴 방법은, 당신은 통과된다 숫자가 아닌 함수에 대해 참 또는 거짓입니다. DSA.Workheets (1) .Range ("G10"). Value = number_right (Application.WorksheetFunction.Round (hello.Worksheets ("getthis" ")) 범위 ("I72 "). 값, -3))' – Rory

+0

내가 코드를 바꾼다면 아무 것도 표시되지 않는다 .. 이상하다! – lo1ngru

+0

함수가 아무 것도 반환하지 않는다 :'Len (n)> 3 Then number_right = Left 우리가 거의 다 왔다고 생각합니다.이 줄은 : 'number_right = Left ((i), Len (i) - 3 (else (n) - Len (n) - 3) else number_right = n' – Rory

답변

0

아마이 :

Sub test() 

Dim DSA As Workbook 
Dim rngValue As Range 

Set DSA = ActiveWorkbook 'May need to change this line if DSA is not already open 
Set rngValue = DSA.Worksheets(1).Range("G10") 

Set rngValue = Application.WorksheetFunction.Round(hello.Worksheets("getthis").Range("I72").Value, -3) 
If Len(rngValue) > 3 Then 
    Set rngValue = number_right(rngValue) 
End If 

End Sub 

Function number_right(n As Range) As Variant 
    number_right = Left(n, Len(n) - 3)  
End Function 
+0

오류가 발생합니다. 마지막 rngValue의 "ByRef 인수 유형 불일치"(Len (rngValue)> 3 인 경우) rngValue = number_right (오류) End If 왜 그런지 알아? – lo1ngru

+0

@ lo1ngru 변수'n'을'Range'를 입력하도록 변경했습니다. 그게 작동하는지 확인하십시오. – Brian

+0

코드가 둥글게되면 불일치가 발생합니다 ... – lo1ngru