نمایش نتایج: از شماره 1 تا 6 , از مجموع 6

موضوع: نوشتن دستور در SheetChange

  1. #1


    آخرین بازدید
    2023/09/10
    تاریخ عضویت
    July 2010
    نوشته ها
    118
    امتیاز
    28
    سپاس
    90
    سپاس شده
    30 در 18 پست
    تعیین سطح نشده است

    نوشتن دستور در SheetChange

    با سلام
    یه جدولی دارم که یکی از ستون هاش تاریخ و یکی دیگه ش مبلغ هست (البته چند ستون دیگه هم داره که کاریش ندارم)
    من میخوام توی ستون بعد از مبلغ یه ستون دیگه به نام جمع مبالغ روزانه رو داشته باشم
    فرض کنید این جدول هست:
    1394/04/01 500.000
    1394/04/01 250.000
    1394/04/01 750.000 1.500.000
    1394/04/02 420.000 420.000
    1394/04/03 100.000
    1394/04/03 220.000 320.000

    اون ستون سوم رو هر جوی توی خود اکسل فکر کردم نتونستم پیاده سازی کنم برا همین رفتم سراغ VBA(ستون اول و دوم ر وارد میکنم میخوام ستون سوم رو محاسبه کنه)
    کد زیر رو نوشتم و توی SheetChange قرار دادم ولی مشکل داره:
    کد PHP:
    Private Sub Workbook_SheetChange(ByVal Sh As ObjectByVal Target As Range)

        
    Dim i As Integer
        Dim j 
    As Integer
        Dim m 
    As Integer
        Dim n 
    As Integer
        Dim RowNumber 
    As Integer
        
        
    'RowNumber = ActiveSheet.Range("A65536").End(xlUp).Row
          
            '
    For 2 To RowNumber
            
    For 2 To 50
            j 
    1
            
    If Cells(i2).Value <> Cells(j2).Value Then
            m 
    i
            n 
    1
            
    Do While Cells(m2).Value Cells(n2).Value
            Cells
    (i9).Value Cells(i9).Value Cells(m8).Value
            m 
    1
            n 
    1
            Loop
            End 
    If
            
    Next i

    End Sub 
    اول اینکه نمیدونم چرا موقع اجرا به خط RowNumber = ActiveSheet.Range("A65536").End(xlUp).Row ایراد میگرفت! دلیلش چی هست؟ همین کد رو توی فایل دیگه امتحان کردم مشکلی نداشتم ایا با بقیه قسمت ها همخونی نداره؟
    خلاصه دیدم گیر میده غیر فعالش کردم دستور for رو هم به جای i = 2 To RowNumber موقتا i = 2 To 50 گذاشتم کد اجرا بشه ببینم چی میشه
    اما بعد از اجرای این کد میافته توی بی نهایت و دائم داره حساب میکنه
    مشکل چی هست؟ چطور میشه حلش کرد؟
    من خودم فکر میکنم چون خود ستون سوم دچار تغییر میشه دوباره حساب میکنه و برا همین هیچ وقت تموم نمیشه وتنها چیزی که به ذهنم رسیده بود این که رنج تغییرات رو محدود کنم مثلا بگم اگه تغییرا توی فلان رنج بود کد اجرا بشه اما این رو بلد نیستم پیاده سازی کنم
    ضمنا فکر کنم کد یه مشکل دیگه هم داره و باید قبل از حلقه Do While باید Cells(i, 9).Value خالی باشه اما اینجوری نوشتم کار نکرد:
    Cells(i, 9).Value =""
    ممنون میشم راهنمایی کنید
    با تشکر
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.
    پاسخ مورد نظر براي اين تاپيك ارسال شده است.

  2.  

  3. #2


    آخرین بازدید
    2023/09/10
    تاریخ عضویت
    July 2010
    نوشته ها
    118
    امتیاز
    28
    سپاس
    90
    سپاس شده
    30 در 18 پست
    تعیین سطح نشده است

    سلام
    فایل رو پیوست کردم خودم هر کاری کردم درست نشد
    ممنون میشم ببینید مشکل از چی هست
    با تشکر
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: rar f.rar اطلاعات (12.8 کیلو بایت, 22 نمایش)

  4. #3


    آخرین بازدید
    2024/01/21
    تاریخ عضویت
    November 2013
    محل سکونت
    تهران
    نوشته ها
    1,519
    امتیاز
    6121
    سپاس
    2,884
    سپاس شده
    4,889 در 1,381 پست
    سطح اکسل
    71.67 %

    سلام،
    کد احتياج ندارد، تو خانه i2 اين فرمول را نوشته و به پايين درگ کنيد: (البته بايد حتما" تاريخها در جدولتان از کوچک به بزرگ سورت شده باشد)

    کد PHP:
    =if(b3=b2;0;sumif($b$2:b2;b2;h2:$h$2)) 


  5. #4


    آخرین بازدید
    2023/09/10
    تاریخ عضویت
    July 2010
    نوشته ها
    118
    امتیاز
    28
    سپاس
    90
    سپاس شده
    30 در 18 پست
    تعیین سطح نشده است

    ممنون
    خیلی عالی جواب داد فقط من به جای 0 از "" استفاده کردم تا خونه ها بدون عدد خالی باشن
    حالا جدایی از این فرمول میشه بفرمایید مشکل کدی که خودم نوشتم چیه؟
    با تشکر

  6. سپاس ها (1)


  7. #5


    آخرین بازدید
    2024/01/21
    تاریخ عضویت
    November 2013
    محل سکونت
    تهران
    نوشته ها
    1,519
    امتیاز
    6121
    سپاس
    2,884
    سپاس شده
    4,889 در 1,381 پست
    سطح اکسل
    71.67 %

    خيلي از متغيير ها را اضافه وارد کرده ايد، ولي اشکال اصلي فکر کنم مربوط به حلقه اي است که loop مي شود، البته خيلي وقت نکردم بررسي کنم، باز اگر فرصت کردم دقيقتر نگاه مي کنم، ضمن اينکه کد درج شده در فايل با کدي که تو سايت گذاشته ايد فرق مي کند،
    خلاصه فعلا" بر پايه خود کد شما يک کد نوشته ام شايد به درد بخورد:

    کد PHP:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        
    Dim i As Integer
        Dim RowNumber 
    As Integer
      
        RowNumber 
    ActiveSheet.Range("A65536").End(xlUp).Row
             
            
    If Target.Column 9 Then
               
    For 2 To RowNumber
                  
    If Cells(i2).Value Cells(12).Value Then
                     Cells
    (i9).Value Null
                     
    Else
                     
    Cells(i9).Value Application.WorksheetFunction.SumIf(Range(Cells(22), Cells(i2)), Cells(i2), Range(Cells(28), Cells(i8)))
                  
    End If
               
    Next
            End 
    If
    End Sub 

  8. سپاس ها (1)


  9. #6


    آخرین بازدید
    2023/09/10
    تاریخ عضویت
    July 2010
    نوشته ها
    118
    امتیاز
    28
    سپاس
    90
    سپاس شده
    30 در 18 پست
    تعیین سطح نشده است

    سلام
    کد توی فایل رو نسبت به کدی که اینجا گذاشتم تغییر دادم بلکه درست بشه که نشد
    در مورد متغییر هم چون زیاد وارد نیستم مثلا اونجاهایی که i+1 هست رو قبلش یه متغییر جدید تعریف میکردم
    در هر صورت بابت کد هم ممنون خیلی عالی بود
    با تشکر

  10. سپاس ها (1)



اطلاعات موضوع

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

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. دستورهای شرطی(if then else)
    توسط ali.b در انجمن توابع در ويژوال بيسيك - Functions in VBA
    پاسخ ها: 0
    آخرين نوشته: 2014/10/08, 14:53
  2. دستور شرطی
    توسط elder در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 4
    آخرين نوشته: 2014/08/02, 16:26
  3. یک if با دو دستور
    توسط eleexel در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 1
    آخرين نوشته: 2014/07/16, 00:05
  4. ساختار صحیح دستورات شرطی در vb
    توسط امیر رضا دهقان در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 1
    آخرين نوشته: 2013/01/05, 09:40
  5. حذف ردیف با دستور
    توسط khorasan66 در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 4
    آخرين نوشته: 2013/01/03, 16:39

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

انجمن اكسل ايران , اكسل , اكسس , سوال و جواب اكسل , سوال اكسس , انجمن اكسل ايران , توابع اكسل, آموزش اكسل, آموزش اكسس, VBA, ويژوال بيسيك

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است
با ما در تماس باشيد