تغییر رنگ تب شیت در اکسل بر اساس مقدار سلول با vba

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • hamed.ashari
    • 2021/02/04
    • 4
    • 48.00

    پرسش تغییر رنگ تب شیت در اکسل بر اساس مقدار سلول با vba

    سلام و وقتتون بخیر.
    کمک میخواستم از اساتید محترم
    فایلی دارم که به تعداد روزهای ماه شیت داره. و یک شیت نهایی دارم که ابتدا اونجا تاریخ رو میزنم و خودش توی شیت ها جایگذاری میکنه. دنبال یه ماکرو بودم که بتونه با توجه به روز جمعه که توی همون شیت اصلی (کارکرد کلی پرسنل) وارد میکنم بصورت اتوماتیک رنگ تب شیت ها رو قرمز کنه. یه فرمول ماکرو پیدا کردم که باهاش میشه رنگ تب شیت رو با توجه به سلولی که مشخص کردم، عوض کنه ولی مشکلش اینه که حتما باید اون سلول رو انتخاب کنم و اینتر بزنم تا تغییر رنگ اتفاق بیفته. من میخوام بدون این عملیات رنگ تب، اتوماتیک عوض بشه. البته توی عکس اون جمعه که زیر تاریخ نوشته شده بصورت فرمول و ماکرو نویسی (فرساران) هست و مشکلم همینه که وقتی خودش جایگذاری میشه هیچ تغییری نمیکنه.
    به فکرم زد با آدرس دهی اون شیت که تاریخ رو میزنم، اینجا اگه تشخیص داد روز جمعه هست رنگ تب قرمز بشه تا اون مشکل اینتر زدن رو مثلا حل کنم که نفهمیدم چجوری باید آدرس اونجا رو بدم. و مشکل دیگه هم اینه که اسم اون شیت فارسی هست. (کارکرد کلی پرسنل) حتی از فرمول اتورفرش هم استفاده کردم ولی تغییری ایجاد نشد و حتما باید توی این شیت یه تغییری انجام بدم تا اون تب رنگش عوض بشه.
    Click image for larger version

Name:	01.jpg
Views:	1
Size:	33.6 کیلو بایت
ID:	149523
    کد:
    Private Sub Worksheet_Change(ByVal Target As Range)
        MyVal = Range("A4").Text
        With ActiveSheet.Tab
            Select Case MyVal
               
                Case "جمعه"
                    .Color = vbRed
                Case Else
                    .ColorIndex = xlColorIndexNone
            End Select
        End With
    End Sub
  • generalsamad
    مدير تالار توابع

    • 2014/06/22
    • 1496

    #2
    با سلام
    این کد را امتحان کنید ببینید همین مد نظر هست؟
    کد PHP:
    Sub Macro1()
    For 
    1 To Sheets.Count
        Sheets
    (i).Select
        
    If (Sheets(i).Range("A4") = "جمعه"Then
            ActiveWorkbook
    .Sheets(i).Tab.Color 255
        
    Else
            
    ActiveWorkbook.Sheets(i).Tab.ColorIndex xlColorIndexNone
        End 
    If
    Next i
    End Sub 
    Last edited by generalsamad; 2021/12/14, 23:12.
    [CENTER]
    [SIGPIC][/SIGPIC]
    [/CENTER]

    کامنت

    • hamed.ashari
      • 2021/02/04
      • 4
      • 48.00

      #3
      نوشته اصلی توسط generalsamad
      با سلام
      این کد را امتحان کنید ببینید همین مد نظر هست؟
      کد PHP:
      Sub Macro1()
      For 
      1 To Sheets.Count
          Sheets
      (i).Select
          
      If (Sheets(i).Range("A4") = "جمعه"Then
              ActiveWorkbook
      .Sheets(i).Tab.Color 255
          
      Else
              
      ActiveWorkbook.Sheets(i).Tab.ColorIndex xlColorIndexNone
          End 
      If
      Next i
      End Sub 
      سلام و عرض ادب
      با تشکر از شما. کد رو جایگذاری کردم. ولی انجام نشد. و ارور هم داد.
      خود فایل اکسل رو براتون میفرستم البته با همون کدی که خودم زده بودم براتون میفرستم.
      1.rar

      کامنت

      • generalsamad
        مدير تالار توابع

        • 2014/06/22
        • 1496

        #4
        با سلام
        پیغام خطا بخاطر این بوده که نام اولین شیت شما sheet2 میباشد
        کافی است شمارنده حلقه از 2 شروع شود
        [CENTER]
        [SIGPIC][/SIGPIC]
        [/CENTER]

        کامنت

        • دکتر علیزاده

          • 2021/11/27
          • 61

          #5
          نوشته اصلی توسط generalsamad
          با سلام
          پیغام خطا بخاطر این بوده که نام اولین شیت شما sheet2 میباشد
          کافی است شمارنده حلقه از 2 شروع شود
          سلام استاد وقت بخیر
          من امتحانش کردم عالی بود
          سپاس
          [SIZE=4] [COLOR=#800000]امير المؤمنين علي (ع) : [/COLOR][/SIZE][SIZE=4][SIZE=5][FONT=times new roman][COLOR=#000080]دنيا دو روز است يك روز با توست و روز ديگر عليه تو روزي كه باتوست مغرور مَشو و روزي كه عليه توست نا اميد مشو زيرا هردو پايان پذيرند[/COLOR][/FONT][/SIZE]
          [/SIZE]

          کامنت

          • hamed.ashari
            • 2021/02/04
            • 4
            • 48.00

            #6
            نوشته اصلی توسط generalsamad
            با سلام
            پیغام خطا بخاطر این بوده که نام اولین شیت شما sheet2 میباشد
            کافی است شمارنده حلقه از 2 شروع شود
            اون رو هم ادیت کردم ولی بازم هیچ تغییری انجام نشد.
            این کد رو توی همون شیت کارکرد کلی پرسنل بزنم یا برای هر کدوم از شیت ها هم بنویسم؟

            کامنت

            • generalsamad
              مدير تالار توابع

              • 2014/06/22
              • 1496

              #7
              فایل ضمیمه را مشاهد کنید
              فایل های پیوست شده
              [CENTER]
              [SIGPIC][/SIGPIC]
              [/CENTER]

              کامنت

              • hamed.ashari
                • 2021/02/04
                • 4
                • 48.00

                #8
                نوشته اصلی توسط generalsamad
                فایل ضمیمه را مشاهد کنید
                سلام مجدد.
                دست شما درد نکنه. خیلی عالیه. فقط یه سوال، نمیشه فقط با تایپ سال و زدن اینتر و بدون کلیک بر روی دکمه اجرا عملیات خودش اجرا بشه؟
                و اگر بخوام فقط تا شیت 31م این تغییرات اجرا بشه و نره شیت های بعدی چیکار باید بکنم. دستورش رو میخواستم.

                کامنت

                چند لحظه..