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

کریگ در حال توسعه یک کاربرگ است و می خواهد بداند آیا راهی برای تعیین حداکثر تعداد کاراکترهایی که می توان در هر سلول معین وارد کرد وجود دارد یا خیر. او نمی خواهد از Data Validation برای اعمال محدودیت استفاده کند.

هیچ راهی برای انجام این کار به طور مستقیم در اکسل بدون (همانطور که کریگ اشاره می کند) با استفاده از اعتبارسنجی داده وجود ندارد. با این حال، چند چیز وجود دارد که می توانید برای رسیدن به اثر دلخواه تلاش کنید. ابتدا می توانید از یک فرمول برای بررسی طول هر سلول استفاده کنید و در صورت تمایل پیام خطا را نمایش دهید. به عنوان مثال، اگر سلول هایی که می خواهید بررسی کنید در ستون C هستند، می توانید از فرمولی مانند زیر استفاده کنید:

=IF((LEN(C1)>15),"Cell is Too Long","")

فرمول را در سلول سمت راست سلول مورد بررسی قرار دهید (مانند سلول D1)، و سپس آن را به تعداد سلول های لازم کپی کنید. هنگامی که یک ورودی در C1 انجام می شود و اگر بیش از 15 کاراکتر باشد، پیام نمایش داده می شود.

اگر چنین رویکرد مستقیمی نامطلوب است، باید از ماکروها برای بررسی استفاده کنید. مثال زیر یک مثال ساده است که هر زمان که چیزی در کاربرگ تغییر می کند فعال می شود. سپس هر سلول در کاربرگ بررسی می شود تا مطمئن شوید که بیش از 15 کاراکتر نباشد. اگر چنین سلولی کشف شود، یک جعبه پیام نمایش داده می شود و سلول پاک می شود.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    For Each cell In UsedRange
        If Len(cell.Value) > 15 Then
            MsgBox " Cant enter more than 15 characters"
            cell.Value = ""
        End If
    Next
End Sub

یک رویکرد قوی‌تر این است که در کنترل‌کننده رویداد بررسی شود تا ببینیم آیا تغییر در محدوده‌ای از سلول‌هایی که باید از نظر طول محدود شوند، انجام شده است یا خیر.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim rCell As Range
    Dim iChars As Integer
    On Error GoTo ErrHandler

    Change these as desired
    iChars = 15
    Set rng = Me.Range("A1:A10")

    If Not Intersect(Target, rng) Is Nothing Then
        Application.EnableEvents = False
        For Each rCell In Intersect(Target, rng)
            If Len(rCell.Value) > iChars Then
                rCell.Value = Left(rCell.Value, iChars)
                MsgBox rCell.Address & " has more than" _
                  & iChars & " characters." & vbCrLf _
                  & "It has been truncated."
            End If
        Next
    End If

ExitHandler:
    Application.EnableEvents = True
    Set rCell = Nothing
    Set rng = Nothing
    Exit Sub

ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub

برای استفاده از این ماکرو، فقط باید مقدار اختصاص داده شده به iChars (نماینده حداکثر طول مجاز) و محدوده اختصاص داده شده به rng (در حال حاضر روی A1:A10 تنظیم شده است) را تغییر دهید. از آنجایی که ماکرو فقط تغییرات در محدوده مشخص شده را بررسی می کند، با کاربرگ های بزرگتر بسیار سریعتر از ماکروهایی است که تمام سلول های استفاده شده را بررسی می کند.

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

پاسخ شما

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

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

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

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

82 نفر آنلاین
0 عضو و 82 مهمان در سایت حاضرند
بازدید امروز: 8451
بازدید دیروز: 12076
بازدید کل: 15390863
...