2016-08-03 83 views
0

我在VBA中編寫了一個代碼,該代碼從工作簿獲取值並將它們複製到另一個工作簿。因此,例如在單元格G20中,我將有45 678 然後代碼將該數字四捨五入到46 000,然後我需要一個函數來刪除最後3個數字,如果數字足夠大,可以使用下面提供的If語句。 我認爲內容是正確的,但我認爲我沒有把它稱爲正確的方式。調用函數/子代碼vba

DSA.Worksheets(1).Range("G10").Value = Application.WorksheetFunction.Round(tax_declaration.Worksheets(1)Range("I72").Value, -3) 
DSA.Worksheets(1).Range("G11").Value = Application.WorksheetFunction.Round(Val(Application.WorksheetFunction.Sum(Range("I25:I27"))), -3) 

Call thousand(DSA.Worksheets(1).Range("G10")) 

End Sub 

Sub thousand(i As Variant) 

If Right(i, 3) = "000" Then 
    i = Left(i, Len(i) - 3) 
End If 

End Sub` 

我怎麼可能創建一個函數像我的if語句,並通過我的「DSA.Worksheets(1)爲」用它來循環? - 我有幾個。

在此先感謝!

+0

你是什麼東西行是否意味着循環遍歷所有的工作表?或者在同一個工作表中循環多個範圍? – BruceWayne

+0

我的意思是在同一張工作表中的多個範圍循環,抱歉如果不清楚! – lo1ngru

回答

1

我不太清楚你的意思,但不是子只使用一個功能,並通過不同的I:

Function thousand(i As Variant) As Variant 

If Right(i, 3) = "000" Then 
    thousand = Left(i, Len(i) - 3) 
End If 

End Function 

然後你只需做沿着debug.print thousand(DSA.Worksheets(1).Range("G10"))

+0

當我嘗試運行marco時,我收到一條錯誤消息,說「參數不是可選的」。我改變了函數聲明千爲一個Variant,但我仍然得到「參數不可選」Debug.Print千(DSA.Worksheets(1).Range(「G10」))'你知道爲什麼嗎?我想我可能需要在某處添加「設置」! – lo1ngru