PDA

View Full Version : سوال: تابع CVErr(x)



shahpari
شنبه 28 اردیبهشت 1387, 11:54 صبح
لطفا اگر از دوستان کسی یه نمونه برنامه کوچیک در مورد کاربرد این تابع داره برام بزاره؛ ممنون

تابع CVErr(x) معادل error پارامتر ورودی x رو بر میگردونه

Mbt925
شنبه 28 اردیبهشت 1387, 12:56 عصر
Public Function Add2(Num1 As Variant, Num2 As Variant, Optional Num3 As Variant) As Variant

Dim Sum As Double, sMsg As String
On Error GoTo Handler

Sum = CDbl(Num1) + CDbl(Num2)

If IsMissing(Num3) Then
sMsg = "The sum of " & Num1 & " and " & Num2 & " is "
Else
Sum = Sum + CDbl(Num3)
sMsg = "The sum of " & Num1 & ", " & Num2 & " and " & Num3 & " is "
End If
Add2 = sMsg & Sum

Exit Function

Handler:
Add2 = CVErr(2036) 'xlErrNum = 2036

End Function

shahpari
شنبه 28 اردیبهشت 1387, 21:27 عصر
این چه برنامه ای هست و داره چه کاری انجام میده؟



Add2 = CVErr(2036) 'xlErrNum = 2036



در ضمن چرا عدد رو دستی وارد کردین؟

از کجا بفهمم که چه موقع از چه عددی به جای x استفاده کنم؟

ali_habibi1384
یک شنبه 29 اردیبهشت 1387, 02:45 صبح
این نمونه رو ببینید:


On Error GoTo ex
s = 1 / 0
Exit Sub
ex:
a = CVErr(Err.Number)
MsgBox CStr(a)

شما برای گذاشتن مقدار x باید شماره خطای تولید شده رو چک کنید که همون Err.number هست .

Mbt925
یک شنبه 29 اردیبهشت 1387, 10:40 صبح
فرض کنید تابعی دارید که قرار یه کاره خاص رو انجام بده و دارای چند ورودیه.
کاربر توع ورودی ها رو اشتباه وارد می کنه، یکی از روش های معمول برای نشون دادن خطا استفاده از این متد هست. یعنی تابعتون به عنوان خروجی این نتیجه این متد رو بر میگردونه.

اگه خروجی تابعتون از نوع Variant باشه ، استفاده از این تابع خیلی مناسبه ، چون خروجیش Variant هست.
مزیتش اینه که خروجی این تابع رو می تونید به هر نوعی تبدیل کنید.

shahpari
یک شنبه 29 اردیبهشت 1387, 13:46 عصر
راستش از من خواسته شده تو برنامم یه ارور جدید تعریف کنم البته با استفاده از همین تابع

مثلا در نظر بگیرید که به طور معمول فقط تقسیم عدد به روی صفر خطا داره ولی باید کاری کنم که صفر
تقسم بر عدد هم باعث ایجاد یه ارور بشه؛ این برنامه یه جور مالتی مدیاست به صورت اینتراکتیو.

یعنی کاربرد تابع CVErr فقط برای ورود داده هست؟

ali_habibi1384
یک شنبه 29 اردیبهشت 1387, 14:49 عصر
یعنی کاربرد تابع CVErr فقط برای ورود داده هست؟
نه ربطی نداره cverror کلا برای مدیریت خطاست و هر شماره خطایی رو شامل میشه و ربطی به ورود داده یا خطای تقسیم بر صفر نداره. همه رو شامل میشه.

ASKaffash
یک شنبه 29 اردیبهشت 1387, 17:43 عصر
با سلام
چرا از Err.Number , Err.Description استفاده نمی کنید پس ازکنترل خطا این مقادیر در دسترس شماهستند

shahpari
یک شنبه 29 اردیبهشت 1387, 19:42 عصر
با سلام
چرا از Err.Number , Err.Description استفاده نمی کنید پس ازکنترل خطا این مقادیر در دسترس شماهستند

بله ولی خطایی که واقعا وجود داره ؛ نه خطایی که قراره فقط تحت شرایط خاصی تعریف بشه؛ البته من انگار درخواستشون رو اشتباه متوجه شدم؛ الان تقریبا مشکلم حل شده

ممنون.:لبخندساده: