صفحه 2 از 2 نخستنخست 12
نمایش نتایج: از شماره 11 تا 16 , از مجموع 16

موضوع: چگونه در اکسل توابع جدید بنویسم

  1. #11
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Icon16 مثال 2) سلولهایی را که رنگ آنها . . . را با هم جمع بزنید.

    بهتر است از مثال قبل یک استفاده کاربردی کنیم. مثلا در یک محدوده می‌خواهیم سلولهای قرمز رنگ را با هم جمع بزنیم. (این سلولها می‌توانند با Conditional Formationg قرمز شده باشند.)

    Public Function SumByColor(InRange As Range, WhatColorIndex As Integer) As Double

    Application.Volatile True

    For Each C In InRange.Cells

    If C.Interior.Colorindex = WhatColorIndex Then
    SumByColor = SumByColor + C.Value
    End If

    Next C

    End Function
    · نام تابع : SumByColor و نوع آن را Double در نظر گرفتیم.
    · ورودی‌ها: محدوده که نام آنرا InRange و شماره رنگ که نام آنرا WhatColorIndex گذاشتیم و از نوع عدد صحیح است.
    · عبارت For Each C InRange دارد می‌گوید که C یک سلول از سلولهای محدود InRange است .

  2. #12
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Icon16 مثال 4- تابعی ایجاد کنید که اختلاف بزرگترین و کوچکترین عدد یک محدوده را حساب کند.

    البته اینکار با خود اکسل بسیار ساده است و کافی است که فرمول =max( ) – Min( ) را بکار ببریم ، اما هدف این مثال اینست که نشان دهد چطور می‌توان در محیط ویژوال بیسیک از توابع استاندارد اکسل استفاده کرد.

    Public Function max_min(InRange As Range) As Double

    Application.Volatile True

    MaxNum = Application.WorksheetFunction.Max(InRange)
    MinNum = Application.WorksheetFunction.Min(InRange)

    max_min = MaxNum - MinNum

    End Function
    همانطور که می‌بینید با دستور application.worksheetfunction.xxx که به جای xxx نام تابع استاندارد اکسل را می‌نویسیم.

    مثال 4- می‌خواهیم تابعی بنویسیم که بتواند مقدار هزار، میلیون و میلیارد را در یک عدد تشخیص دهد و سپس کلمه "تومان" یا "ریال" را هم به آن عدد اضافه کند . در صورتی که عدد معتبر نبود پیغام خطای مناسبی را اعلام کند.

    مثلا اگر عدد 15000 وارد شد بنویسید : 15 هزار ریال (یا 15 هزار تومان)
    با این مثال قصد داریم ورودیهای Optional را مرور کنیم. مثلا اگر تابع Vlookup را در نظر بگیریم ، آخرین ورودی آن انتخابی (optional) است ، بدین معنی که اگر کاربر مقداری را وارد نکند به طور پیش فرض مقدار True را در نظر می‌گیرد و در ضمن اگر کاربر خواست می‌تواند ورودی را به تابع بدهد.
    حالت ساده این کار در VB به این صورت است که می‌نویسیم :

    Public Function Test(Num as Integer, optional Num as Integer = True)

    تفسیر کد بالا به این صورت است که تابعی داریم به نام Test با دو ورودی.
    ورودی اول آن مقداری است به نام Num و از نوع عدد صحیح است .
    ورودی دوم آن مقداری است اختیاری ، یعنی کاربر می‌تواند ورودی دوم را ندهد و با تعریف بالا مقدار پیش فرض آن True در نظر گرفته شده که اگر کاربر مقداری را صریحاً به تابع اعلام نکند ، آنوقت مقدار دوم True در نظر گرفته خواهد شد و کار تابع با این مقدار شروع می‌شود.
    اگر ورودی دوم داده نشود یا 1 یا True اعلام شود ، کلمه ریال در نظر گرفته خواهد شد.
    اگر ورودی دوم False یا 0داده شود ، کلمه تومان در نظر گرفته خواهد شد.

    حال به نوشتن تابع مذکور می‌پردازیم :

    Public Function PersianCurrency(MyNumber As String, Optional Mode As Boolean = True)

    Application.Volatile True

    If Val(MyNumber) >= 0 Then
    Temp$ = MyNumber
    Cur$ = ""
    End If

    If Val(MyNumber) >= 1000 Then
    Temp$ = Mid(Trim(MyNumber), 1, Len(MyNumber) - 3)
    Cur$ = "هزار"
    End If

    If Val(MyNumber) >= 1000000 Then
    Temp$ = Mid(Trim(MyNumber), 1, Len(MyNumber) - 6)
    Cur$ = "ميليون"
    End If

    If Val(MyNumber) >= 1000000000 Then
    Temp$ = Mid(Trim(MyNumber), 1, Len(MyNumber) - 9)
    Cur$ = "ميليارد"
    End If


    If Mode = True Then C$ = "ريال" Else C$ = "تومان"

    PersianCurrency = Temp$ & Cur$ & " " & C$

    If Val(MyNumber) = 0 Then
    PersianCurrency = "مقدار يافت نشد"
    End If

    End Function
    تست و خروجی این تابع را در مثال زیر مشاهد می‌کنید .
    تذکر : مقدار True همان 1 است و مقدار False همان 0 است . (یعنی از هر کدام از این مقادیر می‌توان استفاده کرد.)

    A
    B
    C
    1
    10000
    10هزار ريال
    =Persiancurrency(A1,1)
    2
    250000
    250هزار تومان
    =Persiancurrency(A2,FALSE)
    3
    15000000
    15ميليون ريال
    =Persiancurrency(A3,1)
    4
    15000001
    15ميليون تومان
    =Persiancurrency(A4,FALSE)
    5
    far
    مقدار يافت نشد
    =Persiancurrency(A5,1)
    این تابع جنبه تمرینی دارد و همه مقادیر اعداد را پوشش نمیدهد ، فقط ارقامی که با صفر همراه هستند را می شناسد.

  3. #13
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Icon16 استفاده از توابع در تمامی فایلهای اکسل

    اما این سوال پیش می‌آید که چطور می‌شود این توابع را در همه جا – یعنی همه فایلهای اکسل – استفاده کنیم .
    وقتی شما یک تابع جدید را تعریف می‌کنید این تابع فقط در همان فایل (البته همه sheet های آن) قابل استفاده است و اگر بخواهید این تابع را در فایل دیگری فراخوانی کنید، با پیغام #Name مواجه خواهید شد.
    یک راه این است که این فایل را بعنوان یک فایل Template ذخیره و بعد استفاده کنیم.
    اما راه اصولی اضافه کردن تابع در اکسل استفاده از Add-In ها است.


  4. #14
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Icon16 Add-In چیست؟

    Add-In توابعی هستند که توسط کاربران نوشته می‌شود و سپس روی اکسل اضافه می‌گردند. هر بار که اکسل اجرا شود، تمامی این توابع نیز فراخوانی خواهند شد و در واقع Add-In ها امکان بسط نرم افزار را بدون محدودیت به کاربران می‌دهد.

  5. #15
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Icon16 ایجاد یک Add-In

    قدم اول ایجاد یک Add-In است که کار بسیار ساده‌ای است.
    · فایلی که توابع در آن نوشته شده است را باز کنید.
    · تمام Sheetهای اضافه آن را حذف کنید. (فقط یک sheet خالی داشته باشید.)
    · از منوی File گزینه Save as را انتخاب کنید.
    · یک نام برای فایل انتخاب کنید.
    · در جلوی گزینه Save As type گزینه MicroSoft Office Excel Add-In را انتخاب کنید.
    دقت داشته باشید که فایل را در کجا Save می‌کنید.



  6. #16
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180

    Icon16 نصب یک Add-In

    بعد از ساختن یک Add-In شما می‌توانید آنرا در هر کامپیوتری با هر نسخه‌ای از Office نصب کنید.( مثلا Office2000) با نصب این فایل تمامی‌توابعی که نوشته‌اید به اکسل اضافه خواهد شد و تا وقتی که شما office را Uninstall یا Remove نکنید، این توابع همراه اکسل خواهند بود.
    برای نصب یک Add-In مراحل زیر را دنبال کنید.
    · از منوی Tools گزینه Add-Ins… را انتخاب کنید.
    · با زدن گزینه Brower فایل Add-In را انتخاب کنید.
    تا وقتی که CheckBox در حالت فعال قرار دارد ، این فایل با اکسل فراخوانی می‌شود و می‌توان با تمامی توابع این فایل کار کرد و بازدن کلید Alt+F11 می‌توانید وارد محیط ویژوال بیسیک شوید و فایل خود را با پسوند xla ببینید.

صفحه 2 از 2 نخستنخست 12

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •