احسان غلامی
1 سال پیش
حل شده
پاسخ
جلوگیری از ورود داده های تکراری
باسلام
یوزر فرمی طراحی شده و یکسری اطلاعات داره توی فرم وارده میشه و سپس از طریق کلید ثبت اطلاعات توی جدول اکسل ثبت میشه
توی یوزر فرم 4 تا خط تولید وجود داره و اطلاعات روزانه پر میشه. مشکل اینجاست که اگر کاربر اطلاعات تکراری مثلا برای خط تولید شماره 1 در تاریخ های یکسان 2 بار وارد کنه. اطلاعات ثبت میشه. خواستم راهنمایی بفرمایید این مشکل رو چطوری میتونم حل کنم
گزارش تخلف
سؤالات مربوط به VBA در اکسل
برو به
به پشتیبانی نیاز داری؟
در صورتی که
- در کار با بتازون مشکلی دارید
- در مورد خدمات بتازون سؤالی دارید
- نظراتی را برای ارتقا و بهبود خدمات دارید
خوشحال میشیم که حتماً با ما در میان بزارید
علی محمد یاوری
1 سال پیش
پاسخ حل کننده
سلام،
راههای زیادی هست بنا به سلیقه خودتون. من 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
ویرایش شده توسط علی محمد یاوری در 1 سال پیش
گزارش تخلف