PDA

View Full Version : مبتدی: مشکل با جمع کردن اعدادی که به صورت 1,000 یا 5,000,000 هستن



behnam_tr
جمعه 14 مهر 1391, 14:51 عصر
با سلام ..........
من تو برنامم میخوام جمع 15تا تکست (تکست ها حاوی اعداد به صورت 1,000 هستن یا 5,000,000)
بذارم تو یه تکست دیگه ولی چون فرمت تکست باکس ها به صورت بالاست جمع درست در نمیاد در واقع هر چی قبل از علامت , هست جمع میشه و بقیه جمع نمیشه

چطور میتونم اینا رو جمع کنم نمیخوام فرمت رو عوض کنم چون فاکتور فروش هست و تکست ها قیمت ها و این فرمت ضروریه

arenaw
جمعه 14 مهر 1391, 15:03 عصر
سلام
اینجوری:
(3 تا تکست باکس، یه دونه کامند بوتون)

Private Function RemoveChar(ByVal str As String) As String
Dim i As Variant, c As String
For i = 1 To Len(str)
c = Mid(str, i, 1)
If Asc(c) >= vbKey0 And Asc(c) <= vbKey9 Then
RemoveChar = RemoveChar & c
End If
Next
End Function
Private Sub Command1_Click()
On Error Resume Next
Dim jam As Variant
jam = Val(RemoveChar(Text1)) + Val(RemoveChar(Text2))
Text3 = Format(jam, "###,###,###,###,###,###,###,###")
End Sub

محسن واژدی
جمعه 14 مهر 1391, 15:25 عصر
سلام علیکم
یا کاما را از رشته حذف کنیم، برای مثال:
Private Sub Command1_Click()
Caption = CVal(Text1) + CVal(Text2) + CVal(Text3)
End Sub

Public Function CVal(sString$)
CVal = Val(Replace(sString$, ",", ""))
End Function


چرا که اگه پیش از حذف کاما از Val استفاده کنیم تنها عدد سمت چپ برگشت داده میشود

موفق باشید

behnam_tr
جمعه 14 مهر 1391, 15:48 عصر
ممنون از تمام دوستان مشکل با راهنمایی آقا محسن حل شد

shinyboy
چهارشنبه 19 مهر 1391, 12:08 عصر
من یه مشکل خیلی عجیب دارم وقتی میخوام دوتا متغییر رو جمع کنم مثلا x1+x2 اگه مقدار هر کدومشون 2 باشه به جای اینکه بنویسه 4 -------> مینویسه 22 یعنی میزارتشون کنار هم بقیه عملگرها درسته ها فقط جمع که من باهاش کار دارم مشکل داره ؟! چیکارش کنم ؟!

محسن واژدی
چهارشنبه 19 مهر 1391, 12:15 عصر
من یه مشکل خیلی عجیب دارم وقتی میخوام دوتا متغییر رو جمع کنم مثلا x1+x2 اگه مقدار هر کدومشون 2 باشه به جای اینکه بنویسه 4 -------> مینویسه 22 یعنی میزارتشون کنار هم بقیه عملگرها درسته ها فقط جمع که من باهاش کار دارم مشکل داره ؟! چیکارش کنم ؟!
سلام علیکم
به احتمال خیلی قوی x1 و x2 از نوع String هستند، کد را به ضورت زیر بنویسید:

Val(x1)+Val(x2)



موفق باشید

shinyboy
چهارشنبه 19 مهر 1391, 12:19 عصر
مرسی از جواب سریع تون ولی تو تعریف متغیر ها جفتشون رو از نوع Integer معرفی کردم. اگه اینجوریه عملگرهای دیگه چرا درست کار میکنه؟!!!

aliphp1
چهارشنبه 19 مهر 1391, 12:52 عصر
سلام دوستان
من برعکس این مشکل رو دارم
یعنی یه تکست باکس دارم می خوام وقتی توش عدد تایپ می کنی سه رقم سه رقم با کامل جدا کنه
برای مبلغ می خوام
لطفا کمک کنید

محسن واژدی
چهارشنبه 19 مهر 1391, 13:08 عصر
مرسی از جواب سریع تون ولی تو تعریف متغیر ها جفتشون رو از نوع Integer معرفی کردم. اگه اینجوریه عملگرهای دیگه چرا درست کار میکنه؟!!!
الحاق مقادیر فقط در رشته ها صورت میگیره و در غیر آن براساس عملگر مابینشون جمع، تفریق و ... میشه، یکی از متغیرها را (مثلا x1) انتخاب و Shift+F2 را فشار بدین تا cursor به خط اعلان متغیر پرش کنه و نوعش مشخص بشه



سلام دوستان
من برعکس این مشکل رو دارم
یعنی یه تکست باکس دارم می خوام وقتی توش عدد تایپ می کنی سه رقم سه رقم با کامل جدا کنه
برای مبلغ می خوام
لطفا کمک کنید سلام علیکم
بهتر بود سوال را در تاپیک جداگانه ای مطرح می کردید، کد نمونه زیر را بررسی کنید:

Private Sub Command1_Click()
MsgBox "1000000000 -> " & Format("1000000000", "#,###")
End Sub

موفق باشید

shinyboy
چهارشنبه 19 مهر 1391, 14:56 عصر
بازم ممنون با val(x1) l مشکل حل شد. ولی من اون کاری رو که شما گفتید کردم. تو خط اعلان متغیر نوعش integer بود. هنوزم نفهمیدم چرا اونو به عنوان رشته میشناخت !!!!

برای مشکل دوستمون یه روش دیگه هم هست . تو propeties هر تکست باکس یه گزینه برای تعییین نوع متغیر داخل اون هست . اگر اونو رو number بزاری یه تیک داره که نوشته عددهارو 3 تا 3 تا جدا کنه !

محسن واژدی
چهارشنبه 19 مهر 1391, 17:45 عصر
برای مشکل دوستمون یه روش دیگه هم هست . تو propeties هر تکست باکس یه گزینه برای تعییین نوع متغیر داخل اون هست . اگر اونو رو number بزاری یه تیک داره که نوشته عددهارو 3 تا 3 تا جدا کنه !

سلام علیکم
خاصیت DataFormat برای زمانی است که کاربر textbox را به یک data-source متصل کرده باشد

موفق باشید