کار با لیست باکس و کومبو باکس در وی بی

Ava75

New Member
باعرض سلام و خسته نباشید سوالی داشتم در رابطه با برنامه نویسی وی بی ای در اکسل.
وقتی مسائل به یوزرفرم و ..... رسید مبحث به خوبی درس داده نشد و من در برنامه نویسی مشکل پیدا کرده ام. مثلا در رابطه با اینکه یک سری داده را از کاربر گرفته و آنها را از مین به ماکس مرتب کنیم را هرچه سعی می کنم نمی توانم حل کنم:

Private Sub CommandButton1_Click()
ListBox1.AddItem (TextBox1.Text)
TextBox1.Text = ""
End Sub

Private Sub CommandButton2_Click()
ListBox1.List(0) = Min
For i = 0 To ListBox1.ListCount - 1
If ListBox1.List(i) < ListBox1.List(0) Then
ListBox1.List(i) = Min
End If
Next
ListBox2.List = Min
End Sub
 

Ava75

New Member
با کمال معذرت بابت انکه سه بار سوالم را پست کرده ام، من همین امروز عضو شدم و اینترنتم هم مشکل دارد به همین دلیل این اتفاق افتاد.
البته در رابطه با راه حلم باید بگویم که من در واقه مینیموم را جسته ام نه ترتیب دهی بکنم لطفا راهنمایی ام بفرمایید سپاس گزارم.
همین طور اگر ممکنست کتابی به من معرفی کنید که به من در فهم و یادگیری مطلب وی بی ای در اکسل کمک کند.
باز هم سپاس گزارم.
 

the_king

مدیرکل انجمن
باعرض سلام و خسته نباشید سوالی داشتم در رابطه با برنامه نویسی وی بی ای در اکسل.
وقتی مسائل به یوزرفرم و ..... رسید مبحث به خوبی درس داده نشد و من در برنامه نویسی مشکل پیدا کرده ام. مثلا در رابطه با اینکه یک سری داده را از کاربر گرفته و آنها را از مین به ماکس مرتب کنیم را هرچه سعی می کنم نمی توانم حل کنم:

Private Sub CommandButton1_Click()
ListBox1.AddItem (TextBox1.Text)
TextBox1.Text = ""
End Sub

Private Sub CommandButton2_Click()
ListBox1.List(0) = Min
For i = 0 To ListBox1.ListCount - 1
If ListBox1.List(i) < ListBox1.List(0) Then
ListBox1.List(i) = Min
End If
Next
ListBox2.List = Min
End Sub
کدی که نوشته اید بیشتر شبیه پیدا کردن مقدار min یا max ئه، برای مرتب کردن یک لیست باید خونه های لیست مدام با مقایسه بشن و جاشون تغییر کنه.
اگر میخواهید ListBox1 در خود ListBox1 مرتب بشه کدش اینه :
کد:
Private Sub CommandButton2_Click()
  For i = 0 To ListBox1.ListCount - 2
  For j = 0 To ListBox1.ListCount - i - 2
  If Val(ListBox1.List(j)) > Val(ListBox1.List(j + 1)) Then
  temp = ListBox1.List(j)
  ListBox1.List(j) = ListBox1.List(j + 1)
  ListBox1.List(j + 1) = temp
  End If
  Next
  Next
End Sub
ولی اگه میخواهید ListBox1 دست نخورده باقی بمونه و در ListBox2 مرتب بشه کدش اینه :
کد:
Private Sub CommandButton2_Click()
    ListBox2.Clear
    For i = 0 To ListBox1.ListCount - 1
        ListBox2.AddItem ListBox1.List(i)
    Next
    For i = 0 To ListBox2.ListCount - 2
        For j = 0 To ListBox2.ListCount - i - 2
            If Val(ListBox2.List(j)) > Val(ListBox2.List(j + 1)) Then
                temp = ListBox2.List(j)
                ListBox2.List(j) = ListBox2.List(j + 1)
                ListBox2.List(j + 1) = temp
            End If
        Next
    Next
End Sub
 

جدیدترین ارسال ها

بالا