السبت، 17 أغسطس 2019

اكسل vba تحديد نوع البيانات المدخلة فىTEXTBOX و الحد الأقصى لمحتويات صندوق النص UserForm

اكسل vba تحديد نوع البيانات المدخلة فىTEXTBOX و الحد الأقصى لمحتويات الخلية UserForm
بسم الله الرحمن الرحيم
اهلا بحضراتكم متابعى موقع ومدونة عالم الاوفيس
سؤال ورد الينا من احد الاصدقاء المتابعين 
كيف اقول باجبار المستخدم على ادخال عدد معين من الارقام وليكن 11 رقم فقط لاغير فى textbox؟
وللاجابة على هذا السؤال سنقوم بتنفيذ كود اكسل vba
ليقوم بهذة المهمة بالنيابة عنكم 
اذا كيف نقوم بذلك .
فى البداية لابد لنا من ايجاد دالة معينة تقوم بحساب عدد الارقام المدخلة فى التكست بوكس حتى يتم عمل المعادلة اللازمة لمنع المستخدم من ادخال ارقام اكثر من العدد المطلوب (11 رقم )  وهنا سوف نستخدم الدالة (LEN)
وسيكون شكل الكود كالاتى 

If Len(Me.TextBox1.Value) > 11 Then
MsgBox "number mustbe8 digits"
Me.TextBox1 = ""
End If

وبذلك يكون الكود يعمل انة فى حالة ادخال اكثر من 11 character   ولكن هناك مشكلة اذا قومنا بادخال حرف او نص او مسافة سوف تقوم الدالة (LEN) باحتساب 11 موضع فقط لاغير بغض النظر عن كونة رقم او نص اوغير ذلك وهذا سيسبب مشكلة كبيرة فى دقة النتائج
كيف نتغلب على هذة المشكلة من خلال اضافة كود اخر يقوم باختبار محتويات الخلية اذا كانت نص او اى شئ غير الارقام لن يقبل الادخال 
With TextBox1
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "sorry,only number allowed" 
.Value = vbNullString

لمعرفة كيفية عمل الكود يرجى متابعة شرح الفيديو

 

هناك 3 تعليقات:

  1. السلام عليكم
    بارك الله فيك اخ عماد , شرح روعه كما عهدناك .
    اخي الكريم يا ريت ترفع الملف على موقع اخر , لان الموقع الحالي يحولك دائما الى مواقع دعائيه اخرى مع العلم اني حاولت كثيرا ولم افلح في تحميل الملف .
    شكرا

    ردحذف
  2. السلام عليكم جزاك الله خيرا يا استاذ عماد بس يا ريت ما تتعبش الناس فى تحميل الملفات فعلا الصفحات بتفتح كتير وما حدش بيحمل فيا ريت تسهل للناس ربنا يسهل عليك وجزاك الله خيرا على الافاده

    ردحذف
  3. Private Sub TextBox6_Change()
    Sheets(1).Activate
    Range("A2").End(xlDown).Select

    TextBox9.Value = ActiveCell.Value
    CommandButton7.Enabled = True
    CommandButton3.Enabled = False
    CommandButton10.Enabled = False
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox3.Value = ""
    TextBox4.Value = ""
    TextBox5.Value = ""
    TextBox7.Value = ""
    TextBox8.Value = ""

    lr = WorksheetFunction.CountIf(Range("A2:U3000"), Val(TextBox6.Value))

    If TextBox6.Value <> "" Then

    TextBox1.Value = WorksheetFunction.VLookup(Val(TextBox6.Value), Range("A2:U3000"), 2, 0)
    TextBox2.Value = WorksheetFunction.VLookup(Val(TextBox6.Value), Range("A2:U3000"), 3, 0)
    TextBox3.Value = WorksheetFunction.VLookup(Val(TextBox6.Value), Range("A2:U3000"), 4, 0)
    TextBox4.Value = WorksheetFunction.VLookup(Val(TextBox6.Value), Range("A2:U3000"), 5, 0)
    TextBox5.Value = WorksheetFunction.VLookup(Val(TextBox6.Value), Range("A2:U3000"), 6, 0)
    TextBox7.Value = WorksheetFunction.VLookup(Val(TextBox6.Value), Range("A2:U3000"), 19, 0)
    TextBox8.Value = WorksheetFunction.VLookup(Val(TextBox6.Value), Range("A2:U3000"), 20, 0)
    TextBox40.Value = WorksheetFunction.VLookup(Val(TextBox6.Value), Range("A2:U3000"), 21, 0)

    End If
    CommandButton3.Enabled = False
    CommandButton7.Enabled = True
    CommandButton10.Enabled = True
    End Sub
    لو سمحت يا أستاذ عماد
    ده كود شغال تمام
    لكن أنا أضفت مربع نص يجيب رقم آخر عميل
    عايز أضيف كود يقول للمستخدم لو كتب رقم أكبر من كود آخر عميل يعطيه رسالة وما يدخلش على سطر الدالة vlookup
    ولحضرتك جزيل الشكر

    ردحذف

من نحن

authorمرحبا، أسمي عماد غازى وهذه مدونتي أسعى دائما لأقدم لكم أفضل المواضيع الخاصة بالاوفيس
المزيد عني →

التصنيفات

نموذج الاتصال

الاسم

بريد إلكتروني *

رسالة *

إجمالي مرات مشاهدة الصفحة