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

ریچ تعجب می کند که چگونه می تواند اکسل را طوری پیکربندی کند که وقتی یک رقم تک رقمی را وارد می کند، به طور خودکار به سلول بعدی می رود. او می خواهد فشردن Enter یا Tab را حذف کند تا به سلول بعدی برسد. مقدار ورودی برای محدوده ای از سلول ها همیشه یک رقم مثبت خواهد بود.

این کار را نمی توان با هیچ تنظیمات پیکربندی بومی در اکسل انجام داد. در عوض، باید یک ماکرو ایجاد کنید که ورودی را برای شما مدیریت کند. یک انتخاب طبیعی برای ماکرو استفاده از رویداد Change برای کاربرگ است، به طوری که هر زمان که مقداری در یک سلول وارد می شود، ورودی "از هم جدا می شود" و در سلول های ردیف پر می شود.

Private Sub Worksheet_Change(ByVal Target As Range)
    If IsNumeric(Target.Value) Then
        CRow = Target.Row
        CColumn = Target.Column - 1
        Entry = Target.Value
        For i = 1 To Len(Entry)
            Cells(CRow, CColumn + i).Value = Mid(Entry, i, 1)
        Next
    End If
End Sub

این ماکرو ابتدا بررسی می کند که آیا آنچه وارد شده است عددی است یا خیر. اگر اینطور باشد، ارقام از مقدار استخراج می شوند و در سلول های متوالی در ردیف قرار می گیرند.

البته اشکالی که در چنین ماکرویی وجود دارد این است که برای راه اندازی رویداد همچنان باید Enter را فشار دهید. اگر می خواهید به طور کامل از فشار دادن Enter دور شوید، باید به رویکرد دیگری تکیه کنید. این تکنیک برای تخصیص ماکروها به کلیدهای خاص به تابع OnKey متکی است. کد زیر را در یک ماژول استاندارد ماکرو قرار دهید.

Sub Assigns()
    Dim i As Variant
    With Application
        For i = 0 To 9
            .OnKey i, "dig" & i
        Next
    End With
End Sub
Sub ClearAssigns()
    Dim i As Variant
    With Application
        For i = 0 To 9
            .OnKey i
        Next
    End With
End Sub
Sub dig0()
    ActiveCell.Value = 0
    ActiveCell.Offset(1, 0).Select
End Sub
Sub dig1()
    ActiveCell.Value = 1
    ActiveCell.Offset(1, 0).Select
End Sub
Sub dig2()
    ActiveCell.Value = 2
    ActiveCell.Offset(1, 0).Select
End Sub
Sub dig3()
    ActiveCell.Value = 3
    ActiveCell.Offset(1, 0).Select
End Sub
Sub dig4()
    ActiveCell.Value = 4
    ActiveCell.Offset(1, 0).Select
End Sub
Sub dig5()
    ActiveCell.Value = 5
    ActiveCell.Offset(1, 0).Select
End Sub
Sub dig6()
    ActiveCell.Value = 6
    ActiveCell.Offset(1, 0).Select
End Sub
Sub dig7()
    ActiveCell.Value = 7
    ActiveCell.Offset(1, 0).Select
End Sub
Sub dig8()
    ActiveCell.Value = 8
    ActiveCell.Offset(1, 0).Select
End Sub
Sub dig9()
    ActiveCell.Value = 9
    ActiveCell.Offset(1, 0).Select
End Sub

برای شروع ماکرو، ماکرو Assigns را اجرا کنید. پس از آن، هر بار که یک رقم تایپ می شود، رقم در سلول فعلی قرار می گیرد و سلول بعدی سمت راست انتخاب می شود. اگر متن را تایپ کنید، هیچ اتفاقی نمی افتد. (البته، اگر سعی می کنید یک مقدار ترکیبی مانند B2B وارد کنید، پس با فشار دادن "2" این همان چیزی است که در سلول به پایان می رسد.) وقتی کار با این نوع ورود داده تمام شد، ماکرو ClearAssigns را اجرا کنید. برای تمام کردن

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

پاسخ شما

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

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

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

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

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

69 نفر آنلاین
1 عضو و 68 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 9196
بازدید دیروز: 23827
بازدید کل: 15443712
...