ممیز دار کردن اعداد

shadecute

Member
سلام
دوستان من برای پروژه دانشگاه ( مباحث ویژه ) با وی بی یه برنامه معمولی نوشتم که یه سری چیزا رو بگیره و حالا جمع کنه و مجموع رو نشون بده
احالا استاده به یه چیز گیر داده اینکه اعداد رو موقع وروردی گرفتن 3 تا 3تا جدا کنه

مثلا
10.000
موقع وارد کردن اتوامات خودش جدا کنه
و بعد از جمع اعداد مجموع رو هم به همین شکل نشون بده
مثلا
240.000.000

ممنون میشم راهنماییم کنید
 

the_king

مدیرکل انجمن
شما می توانید از تابع FormatNumber استفاده کنید که یک عدد را بصورت رشته String بر می گرداند.

پارامتر اول این تابع مقدار عددی خواهد بود که قرار است برگردانده شود، مثلا :

کد:
[B]FormatNumber[/B](123456)
[B]FormatNumber[/B](3.14)
[B]FormatNumber[/B](MyNumber)
[B]FormatNumber[/B](Val(Text1.Text))

پارامتر دوم این تابع تعداد رقمهای بعد از ممیز (اعشاری) را مشخص می کند که می تواند 0 هم باشد. مثلا :

کد:
[B]FormatNumber[/B](3.14, 2)
[B]FormatNumber[/B](MyNumber, 0)
[B]FormatNumber[/B](Val(Text1.Text), 4)

برای آنکه رقم ها سه تا سه تا جدا شوند پارامترهای سوم الی پنجم را اینگونه مشخص نمایید (فرض کنیم که n عدد
مورد نظر و m تعداد رقمهای بعد از اعشار باشد :

کد:
FormatNumber([B]n[/B], [B]m[/B], vbFalse, vbFalse, vbTrue)

در مثال زیر ما عدد 12345678 را سه رقم سه رقم جدا کرده و در یک پنجره MessageBox نمایش می دهیم :

کد:
Private Sub Form_Load()
    Dim I As Double
    I = 12345678
    MsgBox [B]FormatNumber[/B](I, 0, vbFalse, vbFalse, vbTrue)
End Sub

در مثال زیر ما مقدار عددی درون کنترل TextBox ای با نام Text1 را سه رقم سه رقم جدا کرده و در درون
TextBox دیگری با نام Text2 کپی می کنیم :

کد:
Text2.Text = [B]FormatNumber[/B](Val(Text1.Text), 0, vbFalse, vbFalse, vbTrue)

عیب این تابع FormatNumber این است که همیشه تعداد رقم های بعد از اعشار ثابتی خواهد داشت.
مثلا اگر مقدار پارامتر دوم 0 باشد عدد 3.14 را 3 بر می گرداند و اگر پارامتر دوم 3 باشد عدد 1234 را 1,234.000 نشان میدهد.

برای رفع این مشکل می توانید از یک تابع اختصاصی استفاده کنید :

کد:
Private Function [B]GroupDigits[/B](ByVal Number As Variant) As String
    Dim Pos As Long
    GroupDigits = Format(Number, "###,###,###,##0.##########")
    If Right(GroupDigits, 1) = "." Then
        GroupDigits = Left(GroupDigits, Len(GroupDigits) - 1)
    End If
End Function

این تابع GroupDigits تنها یک ورودی دارد که همان عددی است که قرار است برگردانده شود.
مزیت این تابع اختصاصی در این است که اعداد اعشاری را با تعداد رقم های بعد از اعشار موجود نشان داده
(تا 10 رقم بعد از اعشار را نمایش می دهد) و اعداد غیر اعشاری را بدون ممیز بر می گرداند.
مثلا عدد 3.14 را 3.14 بر می گرداند و عدد 1234 را 1,234 نشان میدهد.
 

جدیدترین ارسال ها

بالا