ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
37 visibility
موضوع: آفیس توسط:

جان یک کاربرگ ورود داده دارد که به کاربران اجازه می دهد اطلاعات را وارد کنند. او مایل است یک سلول به طور خودکار فرمت شود تا دقیقاً تعداد ارقام اعشاری را که کاربر تایپ می کند نمایش دهد. به عنوان مثال، اگر کاربر "12.345" را تایپ کند، می‌خواهد سلول به طور خودکار برای نمایش 3 رقم اعشار فرمت شود. جان می‌داند که می‌تواند از قالب عمومی برای یک سلول استفاده کند (که این کار را به خوبی انجام می‌دهد)، اما اگر کاربر مقداری را وارد کند که به 0 ختم می‌شود، مانند "12.34500"، که می‌خواهد برای نمایش (به طور خودکار) فرمت شود، این روش کار نمی‌کند. 5 رقم اعشار

اگر فکر می‌کنید که می‌توانید از یک قالب سفارشی برای رفع نیاز استفاده کنید، کار نمی‌کند. با هر فرمت سفارشی که می‌توانستیم ایجاد کنیم، اکسل صفرهای آخر را از آنچه نمایش می‌دهد حذف می‌کند. (یا برعکس، اگر قالب سفارشی "0" را به عنوان یک مکان نگهدار داشته باشد، صفرها را در پایان ورودی اضافه می کند.)

ساده ترین راه برای رسیدگی به این موضوع، کاملا صادقانه، این است که قبل از شروع وارد کردن اطلاعات، سلول ها را به سادگی قالب بندی کنید. به این ترتیب، اکسل به سادگی آنچه وارد شده است - از جمله صفرهای انتهایی - را می پذیرد و آن را در سلول قرار می دهد. علاوه بر این، می توانید محتویات سلول ها را به سمت راست تراز کنید تا حداقل کمی بیشتر شبیه مقادیر عددی به نظر برسند.

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

=VALUE(A1) * 1.375

روش دیگر ایجاد یک ماکرو است که آنچه را که در محدوده ای از سلول ها وارد می شود بررسی می کند. با قالب بندی سلول ها به عنوان Text شروع کنید و سپس یک محدوده با نام (DataEntry) از آن سلول ها ایجاد کنید. سپس می توانید کد زیر را به برگه کد کاربرگ مورد استفاده خود اضافه کنید:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim sEntry As String
    Dim dEntryNumber As Double
    Dim arr

    If Not Intersect(Target, Range("DataEntry")) Is Nothing Then
        Application.EnableEvents = False
        For Each c In Target.Cells
            If IsEmpty(c) Then
                c.NumberFormat = "@"     Reset to Text format
            Else
                If IsNumeric(c) Then
                    If Len(c.Value) = 0 Then
                        c.NumberFormat = "@"     Reset to Text format
                    Else
                        sEntry = c.Value
                        dEntryNumber = CDbl(sEntry)

                        arr = Split(sEntry, ".")
                        If UBound(arr) = 1 Then
                             Change NumberFormat in accordance with
                             the number of digits after the decimal point
                            c.NumberFormat = "0." & String(Len(arr(1)), "0")
                            c.Value = dEntryNumber
                        End If
                    End If
                End If
            End If
        Next c
        Application.EnableEvents = True
    End If
End Sub

ماکرو هر بار که چیزی در کاربرگ تغییر می کند فعال می شود. سپس بررسی می کند که آیا این تغییر در یکی از سلول های محدوده DataEntry رخ داده است یا خیر. اگر چنین است، آنگاه آنچه را که در سلول وارد شده است بررسی می‌کند (که اکسل آن را به عنوان متن در نظر می‌گیرد، زیرا سلول به این شکل قالب‌بندی شده است) و تعیین می‌کند که آیا عدد است یا خیر و چند رقم در سمت راست رقم اعشار وجود دارد. سپس سلول را طوری قالب‌بندی می‌کند که تعداد اعشار را نشان دهد و مقدار عددی را دوباره در سلول قرار می‌دهد.

تنها شرطی که این روش کار نمی کند این است که یک مقدار را در سلولی در محدوده DataEntry قرار دهید (که سلول را به فرمت عددی تبدیل می کند) و سپس مقدار عددی متفاوتی را در همان سلول وارد کنید. در آن مثال، ماکرو راهی برای دانستن اینکه آیا صفرهای انتهایی وارد شده است، ندارد. (به یاد داشته باشید که صفرهای انتهایی تنها در صورتی حفظ می شوند که سلول به صورت Text قالب بندی شده باشد. از آنجایی که سلول اینطور نیست، اکسل صفرهای انتهایی را حذف می کند و ماکرو با آن مقدار کار می کند که گویی وارد شده است.)

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

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

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

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

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 48 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 25 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 53 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 44 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

131 نفر آنلاین
0 عضو و 131 مهمان در سایت حاضرند
بازدید امروز: 621
بازدید دیروز: 25180
بازدید کل: 20337979
...