احسان غلامی
احسان غلامی

9 ماه پیش

حل شده

پاسخ

جلوگیری از ورود داده های تکراری

باسلام

یوزر فرمی طراحی شده و یکسری اطلاعات داره توی فرم وارده میشه و سپس از طریق کلید ثبت اطلاعات توی جدول اکسل ثبت میشه

توی یوزر فرم 4 تا خط تولید وجود داره و اطلاعات روزانه پر میشه. مشکل اینجاست که اگر کاربر اطلاعات تکراری مثلا برای خط تولید شماره 1 در تاریخ های یکسان 2 بار وارد کنه. اطلاعات ثبت میشه. خواستم راهنمایی بفرمایید این مشکل رو چطوری میتونم حل کنم

گزارش تخلف

سؤالات مربوط به VBA در اکسل

برو به

به پشتیبانی نیاز داری؟

در صورتی که

  • در کار با بتازون مشکلی دارید
  • در مورد خدمات بتازون سؤالی دارید
  • نظراتی را برای ارتقا و بهبود خدمات دارید

خوشحال میشیم که حتماً با ما در میان بزارید

پاسخ حل کننده

سلام،

راه‌های زیادی هست بنا به سلیقه خودتون. من 2 روش رو پیشنهاد می دهم

1- اگر تعداد داده های ثبت شده کم هست (خیلی زیاد نیست) با یک حلقه، قبل از ثبت اطلاعات وجود داده تکراری را بررسی کنید:

Private Sub CommandButton1_Click()
    
    ''تعداد داده هاي ثبت شده
    data_count = Sheets(YOUR_TARGET_SHEET).Cells(Rows.Count, 1).End(xlUp).Row
    
    ''حلقه روي تمام داده هاي ثبت شده
    For i = 1 To data_count
    
        if Sheets(YOUR_TARGET_SHEET).Cells(i, VALUE_COL_NUMBER)=VALUE and ... then
            ''داده تکراري است. خروج از ادامه فرايند و ثبت اطلاعات
            Exit Sub
        End If
        
    Next i
    
    '' داده تکراري وجود ندارد، ثبت اطلاعات
    
End Sub

در فرمول بالا مقادیر YOUR_TARGET_SHEET یعنی شیتی که داده ها در آن ثبت شده است، VALUE_COL_NUMBER شماره ستون اولین داده که باید شرط منحصر به فرد بودن را داشته باشد، VALUE مقدار داده که در فرم ثبت شده است

در شرط if باید به تعداد داده ای که باید باهم نشانگر منحصر به فرد بودن داده است، شرط رو گسترش (با and) و روی ستونها و مقادیر ورودی فرم بررسی کنید

دستور Exit Sub باعث خروج از تابع و عدم اجرای مابقی کدها می شود.

2- اگر داده ها زیاد است و وجود حلقه باعث کندی اجرای برنامه می شود، می توانید در یک شیت مخفی و مطمئن، با استفاده از فرمول CountIfs داده تکراری رو بررسی و در کد فوق استفاده کنید. (اول داده ها را در سلول اکسل که به countifs رفرنس دادید، ثبت کنید. مقدار خروجی countIfs را بخوانید که اگر 1 بود یعنی داده وجود دارد و مابقی کد یکسان است.

Private Sub CommandButton1_Click()
    
    ''countIfs ثبت داده ها در شیت مجزا، ورودی تابع
    Sheets("hide").Range("A1").Value = VALUE_1
    Sheets("hide").Range("A2").Value = VALUE_2
    
    ''countifs بررسی خروجی تابع
    If Sheets("hide").Range("A3").Value = 1 Then
        ''داده تکراري است. خروج از ادامه فرايند و ثبت اطلاعات
        Exit Sub
    End If
    
    '' داده تکراري وجود ندارد، ثبت اطلاعات
    
End Sub

ویرایش شده توسط علی محمد یاوری در 9 ماه پیش

گزارش تخلف

برو به

درباره ما

بتازون یک سایت نیست، یک خانواده است. یک محل برای همه ما، محلی که به هم کمک کنیم و با هم پیشرفت کنیم. این که الآن اینجایی اتفاقی نیست، خوشحالیم که بهمون ملحق شدی...