Ray می داند که می تواند برای برگه های کاربرگ که در پایین صفحه اکسل نمایش داده می شوند، رنگی تعیین کند. او فکر می کند که آیا می تواند آن رنگ را مشروط به محتویات یا وضعیت کاربرگ کند. برای مثال، او می خواهد اگر ورودی کاربر در کاربرگ مورد نیاز است، برگه زرد و اگر ورودی واقعاً وارد شده باشد، سبز باشد.
تغییر رنگ برگه کاربرگ فقط به صورت دستی یا از طریق ماکرو امکان پذیر است. در اینجا یک ماکرو ساده وجود دارد که دو سلول در کاربرگ را بررسی می کند، می بیند که آیا چیزی در آن سلول ها وجود دارد یا خیر، و سپس رنگ برگه را بر اساس یافته ها تغییر می دهد:
Sub ChangeColor()
If Range("A1") = "" Or Range("A5") = "" Then
ActiveSheet.Tab.Color = vbYellow
Else
ActiveSheet.Tab.Color = vbGreen
End If
End Sub
البته مشکل چنین ماکرویی این است که باید آن را به صورت دستی اجرا کنید. اگر می خواهید تغییرات رنگ خودکارتر باشد، می توانید منطق را در یک کنترل کننده رویداد بگنجانید. این ماکرو باید به کد مربوط به خود کاربرگ اضافه شود. (روی برگه کاربرگ راست کلیک کرده و View Code را از منوی زمینه ایجاد شده انتخاب کنید. اینجاست که این ماکرو می رود.)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1") = "" Or Range("A5") = "" Then
ActiveSheet.Tab.Color = vbYellow
Else
ActiveSheet.Tab.Color = vbGreen
End If
End Sub
ماکرو فقط روی کاربرگ واحد تأثیر می گذارد و هر بار که سلول انتخاب شده در آن کاربرگ را تغییر می دهید فعال می شود. اگر چیزی می خواهید که کمتر اجرا شود و راحت تر به چندین کاربرگ اضافه شود، یک روش خوب این است که از سه ماکرو استفاده کنید - دو تا در پنجره کد برای کاربرگ و یکی در یک ماژول معمولی. این چیزی است که باید در ماژول ماکرو معمولی قرار دهید:
Private Sub SetTabColor(sRangeName)
Dim c As Range
Me.Tab.Color = vbGreen
For Each c In Range(sRangeName).Cells
If IsEmpty(c) Then
Me.Tab.Color = vbYellow
Exit For
End If
Next c
End Sub
این ماکرو آزمایش می کند تا ببیند آیا هر یک از سلول های یک محدوده نامگذاری شده خالی است یا خیر. اگر این اتفاق افتاد، رنگ برگه روی زرد تنظیم می شود. (شما می توانید به راحتی شرایط آزمایش را قبل از تنظیم رنگ برگه تغییر دهید.) برای اینکه ماکرو کار کند، باید دو ماکرو زیر را به پنجره کد صفحه کاری که می خواهید آزمایش کنید اضافه کنید:
Private Sub Worksheet_Activate()
SetTabColor("CheckRange")
End Sub
Private Sub Worksheet_Deactivate()
SetTabColor("CheckRange")
End Sub
توجه داشته باشید که هر زمان که کاربرگ فعال یا غیرفعال شود، گرداننده های رویداد اجرا می شوند. همچنین توجه داشته باشید که نام محدوده نام گذاری شده حاوی سلول های مورد بررسی به ماکرو SetTabColor ارسال می شود. به این ترتیب، اگر این دو ماکرو را به چندین کاربرگ اضافه کنید، تنها کاری که باید انجام دهید این است که نام محدوده را برای هر یک از آن کاربرگ ها تغییر دهید.
اگر حتی نیازهای پیچیده تری برای تغییر رنگ برگه ها دارید، با بررسی این نکته و استفاده از تکنیک های مختلف مورد بحث در آنجا سود خواهید برد:
https://tips.net/T013710