PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کمبو باکس بدون تکرار



mahsa shayesteh
2012/03/14, 17:04
سلام به دوستای عزیز
من یه ستون از داده ها دارم که توش داده های تکراری هس تو محیط اکسل نمیخوام داده ها یونیک بشن می خوام یه فرم بسازم با یه کمبو باکس که از طریق کد نویسی داده های تکراری تشخیص داده بشه و لیستی که نشون داده میشه یونیک باشه

~M*E*H*D*I~
2012/03/14, 21:29
سلام
شما باید داده ها رو تو یه ارایه بریزی بعد با دوتا متغیر تو حلقه forاونهارو مقایسه کنی و غیر تکراری هارو تو یه ارایه دیگه ذخیره کنی بعد این ارایه رو به کمبو باکس اضافه کنی

Javid Mokhtari
2012/03/15, 22:39
با سلام.

http://www.faupload.com/upload/90.1/Esfand/for-.xlsm

shamsololama
2012/03/19, 17:37
سلام به دوستای عزیز
من یه ستون از داده ها دارم که توش داده های تکراری هس تو محیط اکسل نمیخوام داده ها یونیک بشن می خوام یه فرم بسازم با یه کمبو باکس که از طریق کد نویسی داده های تکراری تشخیص داده بشه و لیستی که نشون داده میشه یونیک باشه


با درود فراوان

با تشکر از دوست خوبم jansiz hayat ازجواب خوب و کاملشون
این هم یک نمونه برای حذف تکراری از کمبو باکس


Private Sub UserForm_Initialize()
Dim n
Dim c As Range
Dim i As Integer
ComboBox1.AddItem Sheet1.Range("A1").Value
For Each c In Sheet1.Range("A1:A1000")

n = fals
If c.Value <> "" Then
For i = 0 To ComboBox1.ListCount - 1

If ComboBox1.List(i, 0) = c.Text Then
' MsgBox (ComboBox1.List(i, 0)) & "-" & c.Value
n = True
GoTo point1:
End If
Next i
If n = flase Then
ComboBox1.AddItem c.Value
End If
End If
point1:
Next c
End Sub



فایل نمونه:
[attachment=484]

~M*E*H*D*I~
2012/03/25, 18:39
با سلام
روشی که تو فایل ضمیمه آوردم هم روش خوبیه

mahsa shayesteh
2012/03/25, 20:11
سلام
ممنون از جوابای متنوعی که دوستان دادن ولی جواب آقای وطن پرست رو اصلا نفهمیدم میشه توضیح بدید

~M*E*H*D*I~
2012/03/25, 20:27
تو این روش برای جلوگیری از اشغال بی مورد حافظه ابتدا آدرس آخرین ردیف استفاده شده رو پیدا میکنیم بعد بر اساس اون محدوده مورد نظر در قالب range1 تعریف میشه (از طریق set ) شیء collection این امکان رو میده مجموعه ای از ایتم ها به صورت واحد در بیان یعنی تو یک گروه قرار بگیرن هر کالکشن دو خصوصیت ایتم و کلید داره هر مقدار تو محدوده به عنوان کلید تعریف میشه این کلید ها باید منحصر به فرد باشن اگه نباشن error 457 به وجود میاد با شرط قرار دادن این ارور تکراری ها به کمبوباکس اضافه نمیشن (البته من این بخش یعنی حلقه foreach رو از یه برنامه دیگه استفاده کردم که کار خودم نبوده توضیحاتم برداشت خودم از روش بود اگه اساتید محترم هم نظر بدن ممنون میشم)

Javid Mokhtari
2012/03/25, 21:57
با سلام.
با تشکر از دوست زحمتکشمون آقای وطن پرست.این خیلی خوبه که برای یک سئوال ایده های دیگری هم قرار دهیم.و به خومون نگیم که «چون یکی از دوستان جواب داده دیگه نیازی نیست که من جواب بدم».و این کار آقای وطن پرست قابل تقدیر است که باعث میشه با ایده های مختلفی روبرو شویم.

آقای وطن پرست،لازم نمیدونم ذره بینی به مسئله نگاه کنیم اما اگه قسمت IFرو به صورت زیر بنویسید بهتره.چون اگه بین داده ها سطر خالی باشه،اون سطر خالی رو هم به Combobox اضافه میکنه:

If Err.Number <> 457 And cell.Value <> "" Then

Nima
2012/10/28, 10:00
با سلام
روشی که تو فایل ضمیمه آوردم هم روش خوبیه


با سلام خدمت اقای وطن پرست عزیز

من از این کدی که شما گذاشتین استفاده کردم ولی وقتی که تعداد ردیفهای ما زیاد باشه زمان لود شدن فرم خیلی زیاد طول می کشه

مثلا من برای یه فایلی که 25000 تا ردیف داره تست کردم 21 ثانیه طول میکشه تا فرم لود بشه

راهی هست که این زمان کم بشه

با تشکر

Nima
2012/11/11, 16:58
... Any new updates

~M*E*H*D*I~
2012/11/11, 18:50
من برای 40000 داده تست کردم خیلی سریع جواب داد به نظرم مشکلت از جای دیگه ناشی میشه