نمایش نتایج 1 تا 2 از 2

نام تاپیک: عدم تغییر در شی بعد از مقدار دهی مجدد

  1. #1

    عدم تغییر در شی بعد از مقدار دهی مجدد

    سلام
    من برای یک کاری گرفتار اکسل و VB شدم و دست و پا شکسته دارم میرم جلو
    در بخشی از برنامه میام بر مبنای یک لیست دیگر، باید یه سری آیتم ها رو جمع کنم!

    For d = date1 To date2    Dim O As New MyList
    Str = 0
    Pub = 0
    Prd = 0
    O.Ave_Product = lsh.Range("K1")
    O.Ave_Story = lsh.Range("K2")
    O.Day = d
    For Each x In Lst
    If CDate(x.key) = d Then
    Str = Str + x.Story
    Pub = Pub + x.Publish
    Prd = Prd + x.Product
    End If
    Next x
    O.Story = Str
    O.Publish = Pub
    O.Product = Prd
    OutLst.Add O

    Next d


    اما وقتی خروجی می گیرم:
    Dim z As Integerz = 1
    For Each lx In OutLst
    sh.Cells(z, 22) = OutLst(z).Day
    sh.Cells(z, 23) = OutLst(z).Product
    sh.Cells(z, 24) = OutLst(z).Publish
    sh.Cells(z, 25) = OutLst(z).Story
    sh.Cells(z, 26) = OutLst(z).Ave_Product
    sh.Cells(z, 27) = OutLst(z).Ave_Story
    z = z + 1
    Next lx

    همه خروجی ها یکسان هست. در حای که چک کردم که در مواردی شرط مورد نظر در کد بلاک اول اجرا شده و مقدار ها تغییر می کند اما خروجی بدین صورت هست:
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5
    3/19/2020 0 0 0 2 5

    مشکل چیست؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1391
    پست
    1,030

    نقل قول: عدم تغییر در شی بعد از مقدار دهی مجدد

    Dim New در VBA میاد موقع تعریف متغیر شی جدید بهش اختصاص میده، نه هر دفعه که به Dim برسه.
    برای همین در VBA این کد :

    Dim i As Integer
    For i = 1 To 2
    Dim x As New MyList
    Next i


    معادل این کد نیست :

    Dim i As Integer
    Dim x As MyList
    For i = 1 To 2
    Set x = New MyList
    Next i


    شما چون در حلقه تون O رو با Set O = New MyList تجدید نمی کنید در کل حلقه d دارید صرفا با یک MyList کار می کنید که داخل حلقه تعویض نمیشه، صرفا همون بار اول موقع تعریف شدن New شده.
    برای همین همه آیتم های درج شده یک شیء واحد هستند.

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: یک شنبه 23 فروردین 1394, 22:04 عصر
  2. سوال : امکان انتقال اسناد یک سازمان به دیتابیس طوری که در صورت تغییر اسناد کتابخانه نیز تغییر کند؟؟!
    نوشته شده توسط mohsenashkboos در بخش برنامه نویسی شیرپوینت (Sharepoint Development)
    پاسخ: 3
    آخرین پست: یک شنبه 16 تیر 1392, 13:42 عصر
  3. پاسخ: 6
    آخرین پست: چهارشنبه 16 تیر 1389, 19:08 عصر
  4. تغییر تغییر مشخصه دستیابی(access specifier) کد ایجاد شده توسط نتبینز ؟؟؟
    نوشته شده توسط mahdi68 در بخش برنامه‌نویسی جاوا
    پاسخ: 1
    آخرین پست: چهارشنبه 04 فروردین 1389, 02:38 صبح
  5. تغییر Toolbar با تغییر Thems ویندوز XP
    نوشته شده توسط na3er-faraji در بخش VB.NET
    پاسخ: 2
    آخرین پست: پنج شنبه 06 مهر 1385, 14:08 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •