چگونگی تغییر مقدار سلول بر اساس رنگ سلول

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

    • 2018/06/08
    • 28
    • 54.00

    [حل شده] چگونگی تغییر مقدار سلول بر اساس رنگ سلول

    با سلام
    بنده می خوام اطلاعات سلول های یک ستون بر اساس رنگ ستون تغییر کنه مثلا اگه رنگ سلول قرمز بود مقدار سلول صفر بشه والا مقدار اون سلول مثلا برابر با مقدار سلول موجود در یک شیت دیگه باشه
    کسی می دونه چه کار باید کنم؟
    ممنون
  • M_ExceL

    • 2018/04/23
    • 677

    #2
    نوشته اصلی توسط mahdi63
    با سلام
    بنده می خوام اطلاعات سلول های یک ستون بر اساس رنگ ستون تغییر کنه مثلا اگه رنگ سلول قرمز بود مقدار سلول صفر بشه والا مقدار اون سلول مثلا برابر با مقدار سلول موجود در یک شیت دیگه باشه
    کسی می دونه چه کار باید کنم؟
    ممنون
    سلام
    از این کد می تونید استفاده کنید بعد از این که رنگ ستون A در شیت یک را به قرمز تغییر دادید داخل یکی از سلول ها کلیک کنید
    تا تغییرات اعمال بشه. و همچنین اگر رنگ اون رو no fill قرار دادید روی یکی از سلول ها کلیک کنید.
    کد:
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim wsa As Worksheet
    Dim wsb As Worksheet
    Set wsa = Sheets("sheet1")
    Set wsb = Sheets("sheet2")
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    For i = 1 To wsb.Range("A" & Rows.Count).End(xlUp).Row
    If wsa.Range("a" & i).Interior.Color = RGB(255, 0, 0) Then
    wsa.Range("a" & i).Value = ""
    Else
    wsa.Range("a" & i).Value = wsb.Range("a" & i).Value
    End If
    Next i
     Application.EnableEvents = True
    Application.ScreenUpdating = True
    End Sub
    البته هر چه تعداد ردیف بیشتر باشه اکسل کمی کند میشه لذا جهت جلوگیری از این مشکل می تونید کد رو داخل یک ماژول وارد
    کنید و هر زمان که نیاز شد اون رو فراخوانی کنید.
    دانلود فایل اکسل
    موفق باشید...
    [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
    [/CENTER]

    کامنت

    • mahdi63

      • 2018/06/08
      • 28
      • 54.00

      #3
      سلام
      ممنون از راهنمایی تون
      1- آیا این کار بدون کد نویسی امکان نداره؟
      2- چون تعداد ردیف ها زیاده اکسل کند می شه و من هم نمیدونم وقتی که کد رو داخل یک ماژول وارد کنم چطوری اون رو فراخوانی کنم. بیزحمت توضیح می دید؟(البته اولویت با عدم کد نویسی است)

      کامنت

      • mahdi63

        • 2018/06/08
        • 28
        • 54.00

        #4
        نوشته اصلی توسط M_ExceL
        سلام
        از این کد می تونید استفاده کنید بعد از این که رنگ ستون A در شیت یک را به قرمز تغییر دادید داخل یکی از سلول ها کلیک کنید
        تا تغییرات اعمال بشه. و همچنین اگر رنگ اون رو no fill قرار دادید روی یکی از سلول ها کلیک کنید.
        موفق باشید...
        ضمن تشکر ویژه از همه دوستان
        با راهنمایی یکی از دوستان و نوشتن کدی که مشکل سرعت را هم بر طرف می کنه مشکل حل شد (ستون "موظفی کارمند" در هر ردیف فایل پیوست شده)
        فایل نمونه رو اینجا می ذارم تا اگه متخصصین امر هر نوع مشکلی درش می بینن یادآوردی کنن تا بر طرف بشه

        ضمن اینکه من می خوام لیست باکس های فرم زمانی که مقدار سلول «مرخصی» برابر با سلول «موظفی کارمند» باشه فعال و قابل تغییر باشه در غیر اینصورت غیر فعال باشه
        اگه کمکم کنید خیلی ممنون می شم
        فایل های پیوست شده

        کامنت

        • M_ExceL

          • 2018/04/23
          • 677

          #5
          نوشته اصلی توسط mahdi63
          ضمن تشکر ویژه از همه دوستان
          با راهنمایی یکی از دوستان و نوشتن کدی که مشکل سرعت را هم بر طرف می کنه مشکل حل شد (ستون "موظفی کارمند" در هر ردیف فایل پیوست شده)
          فایل نمونه رو اینجا می ذارم تا اگه متخصصین امر هر نوع مشکلی درش می بینن یادآوردی کنن تا بر طرف بشه

          ضمن اینکه من می خوام لیست باکس های فرم زمانی که مقدار سلول «مرخصی» برابر با سلول «موظفی کارمند» باشه فعال و قابل تغییر باشه در غیر اینصورت غیر فعال باشه
          اگه کمکم کنید خیلی ممنون می شم
          سلام
          فایل رو چک کنید
          کد:
          Private Sub Worksheet_Change(ByVal Target As Range)
          If Not Intersect(Target, Me.Range("e4:e34")) Is Nothing Then
           
          Application.EnableEvents = False
          For i = 4 To 34
          If Cells(i, 3) = Cells(i, 5) Then
              With Range("b" & i).Validation
                  .Delete
                  .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                  xlBetween, Formula1:="=$d$42:$c$42"
                  .IgnoreBlank = True
                  .InCellDropdown = True
                  .InputTitle = ""
                  .ErrorTitle = ""
                  .InputMessage = ""
                  .ErrorMessage = ""
                  .ShowInput = True
                  .ShowError = True
              End With
              ElseIf Cells(i, 2) <> Cells(i, 3) Then
              Range("b" & i).Validation.Delete
          End If
          Next i
          End If
          Application.EnableEvents = True
          End Sub
          دانلود فایل
          Last edited by M_ExceL; 2018/06/12, 00:51.
          [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
          [/CENTER]

          کامنت

          • mahdi63

            • 2018/06/08
            • 28
            • 54.00

            #6
            سلام
            ممنونم؛ خیلی عالی تقریبا همون چیزی شد که می خوام فقط اینکه کاش کد طوری بود که برای جمعه ها هم لیست غیر فعال بشه
            خودم خواستم این کار رو کنم ولی نشد!!!! آخه کار هر کس نیست خرمن کوفتن
            اگه شد کمی درباره عملکرد کدی که نوشتید توضیح بدید تا شاید ما هم کمی یاد گرفتیم

            ضمنا آیا میشه که من این فرم رو توی یک شیت برای 12 ماه سال طراحی کنم. یعنی بشه با کنترلر، سال و ماه رو انتخاب کرد و اتوماتیک ایام رو به جای این که به صورت جدول هفتگی بیاره به شکل فرم مد نظر بنده نمایش بده(تقویم اکسلی زیاده اما ایام رو به صورت جدول هفتگی نمایش میده) اگه این بشه، برای فرم یاددآوری فعالیت های روزانه خیلی کاربردی میشه

            کامنت

            چند لحظه..