এক্সেল ডেটা বৈধকরণ কীভাবে আসলে বৈধতার চেয়ে ড্রপ ডাউনে বিভিন্ন ডেটা প্রদর্শন করে


1

আমি কীভাবে কোনও কক্ষকে একটি কক্ষের একটি ড্রপ-ডাউন মেনু সরবরাহ করতে পারি যা একটি কলাম থেকে বিষয়বস্তু প্রদর্শন করে তবে প্রকৃতপক্ষে একটি আলাদা কলাম থেকে কক্ষে মান লিখি এবং সেই দ্বিতীয় কলামের মানগুলির বিরুদ্ধে বৈধতা দেয়?

আমার কাছে একটি কোড রয়েছে যা খুব প্রায় এটি করে (ক্রেডিট: কনটেক্সচার সাইট থেকে ডিভি 50005 ):

Private Sub Worksheet_Change(ByVal Target As range)
On Error GoTo errHandler
If Target.Cells.Count > 1 Then GoTo exitHandler
If Target.Column = 10 Then
  If Target.Value = "" Then GoTo exitHandler
  Application.EnableEvents = False
  Target.Value = Worksheets("Measures").range("B1") _
    .Offset(Application.WorksheetFunction _
    .Match(Target.Value, Worksheets("Measures").range("Measures"), 0) - 1, 1)
End If

ড্রপ-ডাউন একটি কলাম থেকে মানগুলি প্রদর্শন করে, উদাহরণস্বরূপ কলাম বি, কিন্তু যখন নির্বাচিত হয় তখন কলাম সি থেকে ঘরে একই কাতারে মূল্য লিখবে writes যাইহোক, ডেটা বৈধকরণটি কলাম বিয়ের বিপরীতে বৈধতা যাচাই করা হয়, তাই আমি যদি সেলটিতে কলাম সি থেকে ম্যানুয়ালি কিছু প্রবেশ করি এবং অন্য কোনও ঘরে যাওয়ার চেষ্টা করি তবে ডেটা বৈধকরণ একটি ত্রুটি ছুঁড়ে দেয়।


এটি আমার আগ্রহী, তবে আমি আপনার বিবরণটি পুরোপুরি অনুসরণ করতে পারি না। ওয়ার্কশিট_চেঞ্জ এমন একটি ইভেন্ট যা আমি মনে করি আপনার ওয়ার্কবুকের প্রায় কোনও পরিবর্তন - কেবল আপনার ড্রপ-ডাউন মেনুতে যদি পরিবর্তন হয় তবে তা নয়। আপনি কীভাবে আপনার ড্রপ-ডাউন মেনু সরবরাহ করেন এবং আপনি কীভাবে ডেটাটিকে বৈধতা দিন?
Jook

ওয়ার্কশিট_চেঞ্জকে যে কোনও পরিবর্তনের ইভেন্টের জন্য ডাকা হয় তবে আমি কেবল শর্তসাপেক্ষে নিক্ষেপ করি যে আমার কিছু পরিবর্তন হয়েছে যা আমি যত্ন নিয়ে রেখেছি এবং বাকিটিকে উপেক্ষা করছি, সুতরাং "যদি লক্ষ্য.ক্লোম" শর্তসাপেক্ষে। নামাঙ্কিত ব্যাপ্তির বিপরীতে ডেটা বৈধকরণ ব্যবহার করে ড্রপ-ডাউন তৈরি করা হয়েছিল।
মেমিটিম

উত্তর:


0

আমি দেখতে পাচ্ছি একমাত্র উপায় হ'ল ডেটা বৈধতা অপসারণ করা এবং আপনার নিজের ড্রপ ডাউন বাক্স কোড করা।

এর সুবিধাটি হ'ল ড্রপ ডাউনটি প্রকৃত ঘরটিকে আড়াল করবে, তাই ঘরটি এখনও সাধারণ হিসাবে সম্পাদনা করা যেতে পারে।

(থেকে এই কোড এখানে ) নিচে একটি ড্রপ যোগ হবে, এবং যখন একটি আইটেম নির্বাচন করা হয়, কক্ষে যে মান বললে, নির্বাচিত আইটেমের উপর ভিত্তি করে অন্য সেল পরিবর্তন, এবং তারপর নিজেই অপসারণ তাই কোনও ড্রপ ডাউন বিদ্যমান। আপনার নিজের মজাদার জন্য এই কোডটি ব্যবহার করতে সক্ষম হওয়া উচিত।

কোডটি এখানে পুনরুত্পাদন করা হয়েছে, কেবলমাত্র লিঙ্কটি বিচ্ছিন্ন হলে:

Option Explicit

Sub Test()
    AddDropDown Range("D4")
End Sub

Sub AddDropDown(Target As Range)
    Dim ddBox As DropDown
    Dim vaProducts As Variant
    Dim i As Integer

    vaProducts = Array("Water", "Oil", "Chemicals", "Gas")
    Set ddBox = Sheet1.DropDowns.Add(Target.Left, Target.Top, Target.Width, Target.Height)
    With ddBox
        .OnAction = "EnterProductInfo" ' name corrected
        For i = LBound(vaProducts) To UBound(vaProducts)
            .AddItem vaProducts(i)
        Next i
    End With
End Sub

Private Sub EnterProductInfo()
    Dim vaPrices As Variant

    vaPrices = Array(15, 12.5, 20, 18)
    With Sheet1.DropDowns(Application.Caller)
        .TopLeftCell.Value = .List(.ListIndex)
        .TopLeftCell.Offset(0, 2).Value = vaPrices(.ListIndex - Array(0, 1)(1))
        .Delete
    End With
End Sub

হ্যাঁ, আমাকে একমত হতে হবে যে প্রোগ্রামটিমেটিক পদ্ধতির মধ্যে এটি সম্পূর্ণরূপে সঠিকভাবে আসে। এটি খুব কাছাকাছি ছিল। আমি যা চাইছিলাম তা প্রদর্শন করতে ড্রপ ডাউন তালিকা পেতে পারি এবং আমি যে কক্ষটি চেয়েছিলাম তার মানটি সংরক্ষণ করতে পারি, তবে প্রদর্শিত তালিকাতে ডেটা বৈধকরণ প্রয়োগ করা হয়। সুতরাং ব্যবহারকারী তালিকাটি বাদ দেবে, "1122 - মিষ্টি কম্পিউটার" নির্বাচন করুন এবং "1122" ঘরে প্রবেশ করানো হবে। যাইহোক, সেলটি প্রদর্শিত তালিকার বিরুদ্ধে বৈধকরণ করা হচ্ছে (যেমন, "1122 - মিষ্টি কম্পিউটার") সুতরাং ব্যবহারকারী যদি ম্যানুয়ালি "1122" প্রবেশ করান, সেই সেলটি বৈধতা ব্যর্থ করবে।
মেমিটিম

1

আপনি যদি কোনও ড্রপবক্স নিয়ন্ত্রণ ব্যবহার করতে না চান তবে কেন এই অ্যাপ্রোচটি ভাবেন না?

  • অনকেলসিলিট ইভেন্টটি টার্গেট সেলটি ক্যাপচার করে
  • এতে সেল-ড্রপ ডাউন বৈধতা যুক্ত করুন।
  • ইন-সেল ড্রপডাউন থেকে সঠিক বিকল্পটি বাছাইয়ের পরে
  • অন ​​চেঞ্জ ইভেন্টটি ট্রিগার করা হবে
  • একটি ভেরিয়েবলের মান ক্যাপচার করুন
  • এটা ভাগ কর
  • ইভেন্টগুলি বন্ধ করুন যাতে এটি কোনও লুপ start শুরু করে না ~
  • কক্ষের বৈধতা সরান
  • ভেরিয়েবল বিভাজন সহ কক্ষের মানটি পুনরায় লিখুন
  • ইভেন্টগুলি চালু করুন

সেল বৈধতা সর্বদা অনসलेक्ट ইভেন্টে যুক্ত হবে এবং পরিবর্তিত ইভেন্টে মুছে ফেলা হবে .. আপনি যখনই সেলটি ফোকাস করেন তখন এটি সেল বৈধকরণের একটি ড্রপডাউন হিসাবে প্রদর্শিত হয়, একবার এটি নির্বাচিত হয়ে গেলে এটি হয়ে যায় এবং আপনি যে মানটি চান তা লেখেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.