ايران ويج

نسخه‌ی کامل: مشکل در جمع مقادیر maskedbox
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان لطفاً مشکل من حل کنید
توی یه فرم سه تا maskedbox دارم که می خوام تو دو تایی اولی عدد بنویسم و تو سومی اتوماتیک وار جمع بشه خودم این فرمول نوشتم جواب نمی ده .
Private Sub MaskEdBox5_Change
Dim i As Integer
( i = Val(MaskEdBox2.Text) + Val(MaskEdBox3.Text) + Val(MaskEdBox4.Text
End Sub
سلام.

کد:
Private Sub MaskEdBox1_Change()
    MaskEdBox3.Text = Calc
End Sub

Private Sub MaskEdBox2_Change()
    MaskEdBox3.Text = Calc
End Sub

Private Function Calc() As Integer
    Calc = Val(MaskEdBox1.Text) + Val(MaskEdBox2.Text)
End Function
با سلام
خاصیت ماسک ادیت باکس در کنترل الگوی ورودی هست .
مثلا تاریخ - ساعت - کد پستی و ...
برای تعریف الگوی تاریخ از عبارتی مثل زیر استفاده میکنیم :
####/##/##
که هر علامت شارپ (#) به معنی یک عدد صحیح هست و هر ممیز (/) بصورت ثابت در الگو تعریف شده است .

وقتی کاربر مقداری در ماسک ادیت باکس وارد می کنه اون مقدار همراه با مقادیر ثابت تعریف شده در الگو ثبت میشه .

صورت مسئله :

مشکل وقتی پیش میاد که شما از ماسک ادیت باکس برای جدا کردن 3رقم 3رقم اعداد بزرگ اتفاده می کنین :
###،###،###
که عددی مثل 123456789 رو بصورت 123،456،789 نشون بده و هنگام خواندن مقدار بصورت رشته کاراکتری (نه عددی) بهتون برگردونده میشه و اگه از تابع Val استفاده بکنین مقدار بازگشتی قسمت صحیح رشته خواهد بود یعنی فقط مقدار 123 بهتون برگردونده میشه .

راه حل :
قبل از خواندن مقدار ماسک ادیت باکس باید تمام کاراکتر های ثابت تعریف شده در الگو حذف شود .
کد:
calc =val( replace (maskedbox1.text,",",""))

پی نوشت :
اگر مشکل شما اونی نبود که توضیح دادم، دقت کنین که سرریز داده در متغییر نوع عدد صحیح بوجود نیومده باشه .
حد اکثر مقدار قابل ثبت در متغییر از نوع عدد صحیح هست : 32767
برای اعداد بزرگتر از نوع LONG استفاده کنین که در محدوده زیر هست :
-2,147,483,648 تا 2,147,483,647

برای اطلاعات بیشتر در مورد متغییرها به آدرس زیر سر بزنید :
کد:
https://msdn.microsoft.com/en-us/library/aa263420(v=vs.60).aspx