اذهب الي المحتوي
أوفيسنا

الاجبار على الاختيار من قائمة منسدلة فى الخلية المجاورة بناء على قيمة


engemh

الردود الموصى بها

يمكن استخدام معادلة 

IF

لتحقيق المطلوب اذا فهمت ما تريد

اذا اكبر أو يساوي من 20 لا ينتج شيء

و اذا اكبر من 15 

Large

اكثر من 10

Medium

اكثر من 5

 small

 و طبعا يمكنك تعديل القيم كما تشاء

=IF(D13>=20,"",IF(D13>=15,"Large",IF(D13>=10,"Medium",IF(D13>=5,"Small",))))

مرفق الملف

test sheet.xlsx

  • Like 1
رابط هذا التعليق
شارك

و ان كنت لا افهم السبب

جرب الكود التالي

Private Sub Worksheet_Change(ByVal Target As Range)

If ActiveCell.Column = 1 Then
  If ActiveCell.Value < 20 Then
    MsgBox "you must choose an item"
    ActiveCell.Offset(-1, 1).Activate
    SendKeys "%{DOWN}", True
  End If
End If

If ActiveCell.Column = 2 Then
  If ActiveCell.Offset(0, -1).Value < 20 Then
   If ActiveCell.Value = "" Then
       MsgBox "you must choose an item"
       SendKeys "%{DOWN}", True
 End If
 End If
 End If

End Sub

مرفق الملف

test sheet (2).xlsm

رابط هذا التعليق
شارك

  شكرا جزيلا للاستاذ محمد طاهر علي التعاون الكبير  وفعلا هذا ما اوكنت اقصده لو قيمة اقل من 20 يجبر المستخدم علي بيان السبب  ولكن الكود  في الملف المرفق يخرج الرسالة في كل الحالات 20 او اقل وينتقل ليس الي العمود المجاور لاختيار قيمة ولكن الي اسفل صفين5a72e6673bbe6_listvalue.jpg.0253330494b42412d75203823a240c87.jpg

رابط هذا التعليق
شارك

السلام عليكم

الملف لدي يعمل بطريقة مختلفة و لا يتم الانتقال راسيا و انما يتنقل للخلية المجاورة و يفتحها للاختيار

ربما الفرق فى هذا الخيار من خيارات الاكسيل المتقدمة

After Pressing Enter Move Selection

image.png.1c14215cd498459b47c8b4cc3c6bf1ab.png

 

و الحل البديل غير قيمة ال 

offset

في الكود

ActiveCell.Offset(-1, 1).Activate

علي سبيل المثال تعني الانتقال خلية واحدة للاعلي ثم خلية لليمين

حيث ان الاعدادات لدي عند ضعط ادخال يتم الانتقال الي خلية واحدة الي الاسفل لذا اعود خطوة واحدة للاعلى (-1) ثم اخري لليمين (1)

و يمكنك تعديل الارقام بحسب الاعدادت لديك

 

 

رابط هذا التعليق
شارك

شاكر لتعب حضرتك معايا استاذ محمد طاهر تم تظبيط القيمة ولكن هو دائما يقرا القيمة بعد انتر في الشيت المرفق لو حضرتك واقف علي القيمة 18 وعدلتها 17 او قيمة اقل لو عملت انتر هاينزل لل 20 وهايقراها ومش هايخرج الرسالة علي 18 او 17 ولكن لو القيمة اسفل 18 اقل  من 20 هايخرج الرسالة وهايرجع خطوة الي اعلي لادخل  value مع انه لازم الا ينتقل خطوة لاسفل قبل التاكد من القيمة اللي واقف عليه وادخال القيمة الخاص بها 

test sheet eror.xlsm

رابط هذا التعليق
شارك

السلام عليكم

فى المثال السابق ، كان يتم قراءة القيمة بعد الانتقال و ليس فبله

جرب التالي

Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellValue  As Long
Dim SizeCellValue As String

If Target.Column = 1 Then
CellValue = ActiveCell.Offset(-1, 0).Value
'MsgBox CellValue
  If CellValue < 20 Then
    ActiveCell.Offset(-1, 1).Activate
    SendKeys "%{DOWN}", True
  End If
End If

If Target.Column = 2 Then
    SizeCellValue = ActiveCell.Value
    CellValue = ActiveCell.Offset(0, -1).Value
    'MsgBox CellValue & "-" & SizeCellValue
      If CellValue < 20 Then
          If Len(SizeCellValue) <> 3 Then
              SendKeys "%{DOWN}", True
        End If
     End If
 End If
End Sub

 

FilterListbox.xlsm

رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
×
×
  • اضف...

Important Information