2016-08-03 3 views
0

VBAにコードを書き込んで、ブックから値を取り出して別のブックにコピーしました。したがって、たとえばG20のセルでは、私は45 678 を持っています。この数値は46000に丸められ、次に、以下に示すIfステートメントを使って数字が十分に大きければ、最後の3数字を削除する関数が必要です。 内容は正しいと思いますが、私はそれを正しい方法とは呼んでいないと思います。コード内の関数/ Subを呼び出す

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

私はマルコを実行しようとすると、何千もの "引数はオプションではない"というエラーメッセージが表示されます。私はVariantとして千を宣言するように関数を変更しましたが、Debug.Print千(DSA.Worksheets(1).Range( "G10"))の引数はオプションではありません。なぜ分かりますか?どこかで 'Set'を追加する必要があるかもしれません! – lo1ngru

関連する問題