دانلود کد تبدیل عدد به حروف و بالعکس در اکسل (فارسی)


در دنیای برنامه‌نویسی و کاربردهای روزمره، یکی از نیازهای مهم کاربران، تبدیل اعداد به حروف و برعکس است که در نرم‌افزار اکسل بسیار کاربرد دارد. این فرآیند، مخصوصاً در موارد مالی، حسابداری، صدور فاکتورها و اسناد رسمی، اهمیت ویژه‌ای پیدا می‌کند. در این مقاله، قصد داریم به صورت کامل و جامع درباره نحوه نوشتن و استفاده از کدهای VBA برای تبدیل عدد به حروف و بالعکس در اکسل با زبان فارسی صحبت کنیم و لینک‌های دانلود مربوطه را نیز معرفی کنیم.
همانطور که می‌دانید، اکسل به صورت پیش‌فرض امکاناتی برای تبدیل اعداد به حروف ندارد، بنابراین نیاز است از کدهای VBA (Visual Basic for Applications) استفاده کنیم. این کدها، به صورت اختصاصی نوشته شده، و می‌توانند اعداد را به صورت کلمات فارسی تبدیل کنند، و بالعکس، یعنی از کلمات فارسی، اعداد متناظر را بازیابی کنند. این قابلیت، در بسیاری از موارد، مخصوصاً در اسناد مالی و حسابداری، می‌تواند کار را بسیار ساده‌تر و سریع‌تر کند.
در ادامه، به بررسی نحوه نوشتن این کدها، نصب و اجرا، و همچنین دانلود فایل‌های آماده می‌پردازیم. مهم‌ترین نکته این است که این کدها، باید در محیط VBA اکسل قرار گیرند و سپس به راحتی قابل استفاده باشند.
نحوه نوشتن و ساخت کد تبدیل عدد به حروف در اکسل
ابتدا، باید وارد محیط ویرایش VBA شویم. این کار از طریق کلیدهای Alt + F11 انجام می‌شود. پس از آن، در منوی Insert، گزینه Module را انتخاب می‌کنیم تا یک ماژول جدید ایجاد شود. در این قسمت، می‌توانیم کدهای مورد نیاز را وارد کنیم. یکی از بهترین و رایج‌ترین کدهای تبدیل عدد به حروف فارسی، کد زیر است:
vba  

Function NumToPersian(ByVal MyNumber)

Dim Units As String

Dim Tens As String

Dim Hundreds As String

Dim Result As String
' این قسمت برای اعداد زیر ۱۰ است

Units = Array("", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه")

' ده تا نوزده

TensArray = Array("", "ده", "بیست", "سی", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود")

' صد تا نهصد

HundredsArray = Array("", "صد", "دویست", "سیصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد")
If MyNumber = 0 Then

NumToPersian = "صفر"

Exit Function

End If
If MyNumber >= 100 Then

Hundreds = HundredsArray(Int(MyNumber \ 100))

MyNumber = MyNumber Mod 100

End If
If MyNumber >= 20 Then

Tens = TensArray(Int(MyNumber \ 10))

MyNumber = MyNumber Mod 10

ElseIf MyNumber >= 10 Then

' برای اعداد 10 تا 19

Select Case MyNumber

Case 10: Tens = "ده"

Case 11: Tens = " یازده"

Case 12: Tens = "دوازده"

Case 13: Tens = "سیزده"

Case 14: Tens = "چهارده"

Case 15: Tens = "پانزده"

Case 16: Tens = "شانزده"

Case 17: Tens = "هفده"

Case 18: Tens = "هجده"

Case 19: Tens = "نوزده"

End Select

MyNumber = 0

End If
If MyNumber > 0 Then

Units = Units(MyNumber)

End If
' ساختن نتیجه نهایی

If Hundreds <> "" Then Result = Hundreds

If Tens <> "" Then

If Result <> "" Then Result = Result & " و " & Tens

Else Result = Tens

End If
If Units <> "" Then

If Result <> "" Then Result = Result & " و " & Units ... ← ادامه مطلب در magicfile.ir