اندرو می داند که چگونه رنگ برگه های کاربرگ را به صورت دستی تغییر دهد. با این حال، او راهی برای تغییر رنگ برگه بر اساس یک مقدار در یک سلول در کاربرگ میخواهد.
برای این کار باید از ماکرو استفاده کنید. نکته کلیدی این است که می خواهید ویژگی Color شی Tab را به این صورت تغییر دهید:
ActiveSheet.Tab.Color = vbRed
منطقی که برای رسیدن به نقطه تعیین چنین رنگی به کار می برید بستگی به کاری دارد که می خواهید انجام دهید و چه زمانی می خواهید آن را انجام دهید. با فرض اینکه می خواهید رنگ برگه را بر اساس آنچه در سلول A1 وجود دارد تغییر دهید، می توانید از یک ماکرو مانند زیر استفاده کنید:
Private Sub Worksheet_Change(ByVal Target As Range)
MyVal = Range("A1").Text
With ActiveSheet.Tab
Select Case MyVal
Case "0"
.Color = vbBlack
Case "1"
.Color = vbRed
Case "2"
.Color = vbGreen
Case "3"
.Color = vbYellow
Case "4"
.Color = vbBlue
Case "5"
.Color = vbMagenta
Case "6"
.Color = vbCyan
Case "7"
.Color = vbWhite
Case Else
.ColorIndex = xlColorIndexNone
End Select
End With
End Sub
شما باید ماکرو را به کد صفحه کاری که می خواهید تب آن را تغییر دهید، اضافه کنید. (روی برگه sheets کلیک راست کرده و View Code را از منوی Context انتخاب کنید. کد را در آن پنجره کد قرار دهید.) ماکرو هر چیزی را که در سلول A1 است می گیرد و سپس از ساختار Select Case برای تغییر رنگ برگه استفاده می کند. اگر A1 حاوی 0 تا 7 باشد، منطق رنگ را تغییر میدهد. اگر چیز دیگری در آنجا وجود داشته باشد (یا اصلاً چیزی وجود ندارد)، از ویژگی ColorIndex برای بازگرداندن رنگ برگه به حالت پیشفرض استفاده میشود.
ماکرو را می توان به گونه ای تغییر داد که چیزی که برای آن آزمایش می کند یک رشته متنی (مانند "سیاه"، "قرمز" و غیره) یا یک کلمه کلیدی (مانند "کم" یا "بالا") باشد. همچنین میتوانید از رنگهای مختلف با ویژگی Color استفاده کنید، مانند تابع RGB:
.Color = RGB(255, 0, 0)