ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
24 visibility
موضوع: آفیس توسط:
بردلی سندی دارد که در متن آن اعداد رومی زیادی وجود دارد. او به یک راه آسان برای تغییر این هزاران عدد رومی به عربی نیاز دارد. اینها هیچ ماهیتی ندارند. آنها به سادگی در متن به صورت اعداد رومی تایپ می شوند. او از خود می پرسد که آیا راهی برای تغییر آسان آنها به معادل های عربی خود وجود دارد؟
متأسفانه هیچ تابعی در Word وجود ندارد که اعداد رومی را به عربی تبدیل کند. اگر بخواهید می توانید به سادگی از Find and Replace برای جستجوی اعداد رومی استفاده کنید، اما باید برای هر یک جستجوی جداگانه انجام دهید. برای جستجوی کلمه ای که کاملاً از اعداد رومی بزرگ تشکیل شده است، می توانید از جستجوی کارت وحشی استفاده کنید، که جستجو را کمی آسان تر می کند. تنها کاری که باید انجام دهید این است که «<[CDILMVX]{1,}>» (بدون علامت نقل قول) را جستجو کنید و مطمئن شوید که کادر انتخاب Use Wild Cards را انتخاب کرده اید. وقتی روی Find Next کلیک می کنید، عدد رومی بعدی قرار می گیرد و سپس می توانید آن را به صورت دستی به معادل عربی خود تغییر دهید.
راه دیگری برای تلاش برای انجام تبدیل، استفاده از ماکرو است. می‌توانید یک ماکرو ایجاد کنید که به هر کلمه در سند شما نگاه می‌کند و سعی می‌کند تعیین کند که آیا این کلمه کاندیدای متشکل از اعداد رومی است یا خیر. اگرچه ممکن است برخی از موارد مثبت کاذب دریافت کنید، به خصوص اگر سند شما حاوی کلمات اختصاری باشد که ممکن است با اعداد رومی اشتباه گرفته شود. (به عنوان مثال، اگر از مخفف CC برای کارت اعتباری استفاده می کنید، می توان آن را عدد رومی برای 200 در نظر گرفت.)
مجموعه ماکروهای زیر از هر یک از کلمات یک سند عبور می کند و اگر کلمه فقط شامل اعداد رومی (I، V، X، L، C، D، و M) باشد، از کاربر پرسیده می شود که آیا ماکرو باید آن را تبدیل کند. اعداد
Sub ConvertRoman() Dim wrdX Dim wrd As String Dim tstSW As Boolean Dim J As Long For Each wrdX In ActiveDocument.Words wrd = UCase(Trim(wrdX)) If wrd = "" Or wrd = "I" Or wrd = vbCr Then tstSW = False Else tstSW = True End If For J = 1 To Len(wrd) If InStr("MDCLXVI",Mid(wrd, J, 1)) = 0 Then tstSW = False Exit For End If Next J If tstSW Then wrdX.Select Selection.MoveLeft unit:=wdCharacter, _ Count:=Len(wrdX) - Len(wrd), _ Extend:=wdExtend J = MsgBox("Convert " & wrd & " to Arabic", vbYesNoCancel) If J = vbCancel Then Exit Sub If J = vbYes Then Selection.TypeText Text:=RomanToArabic(wrd) End If Next wrdX End Sub
Function RomanToArabic(Rm As String) As String Dim J As Long Dim ab As Long Dim cc As Long Dim dd As Long ab = 0 Rm = Trim(Rm) J = 1 Do cc = GetValue(Mid(Rm, J, 1)) dd = GetValue(Mid(Rm, J + 1, 1)) If cc < dd Then ab = ab + dd - cc J = J + 1 Else ab = ab + cc End If J = J + 1 Loop Until J >= Len(Rm) If J = Len(Rm) Then ab = ab + GetValue(Mid(Rm, J, 1)) End If RomanToArabic = Trim(Str(ab)) End Function
Function GetValue(ss As String) As Long Dim Cde() Dim Cvalue() Dim J As Long Cde = Array("M", "D", "C", "L", "X", "V", "I") Cvalue = Array(1000, 500, 100, 50, 10, 5, 1) For J = 0 To 6 If ss = Cde(J) Then GetValue = Cvalue(J) Exit Function End If Next J GetValue = 999999 End Function
از آنجایی که حروف بزرگ I یک کلمه بسیار رایج در متن است، ماکروها روی هر یک از آنها متوقف نمی شوند تا مشخص کنند آیا باید تبدیل انجام شود یا خیر. با این حال، اگر بزرگ I بخشی از یک کلمه طولانی تر است که فقط از اعداد رومی تشکیل شده است (مانند XLVII)، آنگاه کاندیدای تبدیل در نظر گرفته می شود. ماکروها همچنین فرض می کنند که تمام اعداد رومی شما بزرگ هستند.
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 35 visibility
4 دوستدار 0 امتیاز منفی
0 پاسخ 170 visibility
0 دوستدار 0 امتیاز منفی
1 پاسخ 719 visibility
ارسال شده در 20 مهر 1400 موضوع: آفیس توسط: بی نام
0 دوستدار 0 امتیاز منفی
0 پاسخ 25 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 23 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

307 نفر آنلاین
0 عضو و 307 مهمان در سایت حاضرند
بازدید امروز: 41908
بازدید دیروز: 25180
بازدید کل: 20379231
...