دستور for و افزودن نتجیه روبروی ایتم هادر لیست باکس(ستون بعدی)

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • ali.b

    • 2014/01/12
    • 798

    [حل شده] دستور for و افزودن نتجیه روبروی ایتم هادر لیست باکس(ستون بعدی)

    سلام خدمت دوستان
    ی سوال دارم هرکاری کردم نشد هر جور کد زدم جواب نگرفتم امیدوارم دوستان راهنمایی کنن


    هدفم اینه لیست باکس دو تا ستون (یا بر حسب نیاز بیشتر) داشته باشه و با دستور for و if هر ایتمی که در لیست باکس هست محاسبات رو انجام بده و در لیست باکس درج کنه
    مثل دستور for برای شیت ها مشکل اینجاست نمیخوام اتبدا در شیت ی جدول کلی درست کنم میخوام مستقیما در لیست باکس درست شه
    این لیست باکس یه جور جدول کلی هست که مثلا در یک ستون 10 تا اسم علی هست هر رویدادی که مدنظر دارم رو انجام بده بعد بیاد در لیست باکس روبری اسم علی نتیجه رو درج کنه
    در شیت با offset راحته اما در لیست باکس هر کاریکردم نشد

    مثلا ستون اول لیست باکس شامل آ
    یتم های غیر تکراری ستون a داخل شیت
    و ستون دوم شامل جمع کلیه اعدادی که وابسته به اون کلمه هستند (sumif) (یا هر نوع فرمول)

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


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

    میخوام مستقیم وارد لیست باکس بشه
    کد:
    [COLOR=#333333]http://s5.picofile.com/file/8369933318/listbox_item.xlsx.html[/COLOR][RIGHT][COLOR=#3E3E3E][FONT=Tahoma]
    [/FONT][/COLOR]
    [COLOR=#3E3E3E][LEFT][/LEFT]
    [/COLOR]
    [COLOR=#333333][/COLOR][/RIGHT]


    فایل های پیوست شده
    [CENTER]
    [/CENTER]
  • M_ExceL

    • 2018/04/23
    • 677

    #2
    نوشته اصلی توسط ali.b
    سلام خدمت دوستان
    ی سوال دارم هرکاری کردم نشد هر جور کد زدم جواب نگرفتم امیدوارم دوستان راهنمایی کنن


    هدفم اینه لیست باکس دو تا ستون (یا بر حسب نیاز بیشتر) داشته باشه و با دستور for و if هر ایتمی که در لیست باکس هست محاسبات رو انجام بده و در لیست باکس درج کنه
    مثل دستور for برای شیت ها مشکل اینجاست نمیخوام اتبدا در شیت ی جدول کلی درست کنم میخوام مستقیما در لیست باکس درست شه
    این لیست باکس یه جور جدول کلی هست که مثلا در یک ستون 10 تا اسم علی هست هر رویدادی که مدنظر دارم رو انجام بده بعد بیاد در لیست باکس روبری اسم علی نتیجه رو درج کنه
    در شیت با offset راحته اما در لیست باکس هر کاریکردم نشد

    مثلا ستون اول لیست باکس شامل آ
    یتم های غیر تکراری ستون a داخل شیت
    و ستون دوم شامل جمع کلیه اعدادی که وابسته به اون کلمه هستند (sumif) (یا هر نوع فرمول)

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


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

    میخوام مستقیم وارد لیست باکس بشه
    کد:
    [COLOR=#333333]http://s5.picofile.com/file/8369933318/listbox_item.xlsx.html[/COLOR]
    سلام،
    چک کنید :
    کد:
    Private Sub UserForm_Initialize()
        Dim cUniq As New Collection
        Dim Rng As Range
        Dim Rngs As Range
        Dim Cell As Range
        Dim sh As Worksheet
        Dim RF As Variant
        Set sh = ThisWorkbook.Sheets("Sheet1")
        Set Rng = sh.Range("A2", sh.Range("A2").End(xlDown))
        Set Rngs = sh.Range("b2", sh.Range("b2").End(xlDown))
            On Error Resume Next
                For Each Cell In Rng
                     cUniq.Add Cell.Value, CStr(Cell.Value)
                Next Cell
                i = 0
                For Each RF In cUniq
                    ListBox1.AddItem
                    ListBox1.List(i, 0) = RF
                    ListBox1.List(i, 1) = WorksheetFunction.SumIf(Rng, RF, Rngs)
                    i = i + 1
                Next RF
    End Sub
    فایل های پیوست شده
    [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
    [/CENTER]

    کامنت

    • ali.b

      • 2014/01/12
      • 798

      #3
      نوشته اصلی توسط M_ExceL
      سلام،
      چک کنید :
      کد:
      Private Sub UserForm_Initialize()
          Dim cUniq As New Collection
          Dim Rng As Range
          Dim Rngs As Range
          Dim Cell As Range
          Dim sh As Worksheet
          Dim RF As Variant
          Set sh = ThisWorkbook.Sheets("Sheet1")
          Set Rng = sh.Range("A2", sh.Range("A2").End(xlDown))
          Set Rngs = sh.Range("b2", sh.Range("b2").End(xlDown))
              On Error Resume Next
                  For Each Cell In Rng
                       cUniq.Add Cell.Value, CStr(Cell.Value)
                  Next Cell
                  i = 0
                  For Each RF In cUniq
                      ListBox1.AddItem
                      ListBox1.List(i, 0) = RF
                      ListBox1.List(i, 1) = WorksheetFunction.SumIf(Rng, RF, Rngs)
                      i = i + 1
                  Next RF
      End Sub

      سلام دمت گرم
      ممنون
      [CENTER]
      [/CENTER]

      کامنت

      چند لحظه..