جوزف از رگرسیون برای تعیین نتیجه ترکیب رنگ استفاده می کند. او دوست دارد یک سلول بر اساس داده های مقدار RGB یا HEX موجود در یک سلول رنگی شود، اما می داند که هیچ راهی برای انجام این کار وجود ندارد. بنابراین، او در نهایت سلول ها را به صورت دستی رنگ آمیزی می کند. اکثر صفحات کار او صدها رنگ دارند، بنابراین این بسیار خسته کننده است. جوزف به این فکر می کند که آیا راهی برای رنگ آمیزی خودکار یک سلول بر اساس مقادیر RGB یا HEX موجود در سلول دیگر وجود دارد؟
بله، این کار را می توان با استفاده از ماکرو انجام داد. به طور مناسب تر، می توان آن را با استفاده از یک رویداد کنترل کننده انجام داد که یک نوع ویژه از ماکرو است که به طور خودکار بر اساس یک "رویداد" که در اکسل رخ می دهد اجرا می شود. در این حالت میتوانید یک کنترلر رویداد ایجاد کنید که هر زمان که چیزی در کاربرگ شما تغییر میکند اجرا میشود، مانند این:
Private Sub Worksheet_Change(ByVal Target As Range)
Range(A2).Interior.Color = CLng("&H" & Range("A1").Value)
End Sub
این ماکرو باید در کد برگهای که میخواهید روی آن تأثیر بگذارد قرار داده شود، بنابراین بر روی برگه کاربرگ راست کلیک کرده و View Code را از منوی Context ایجاد شده انتخاب کنید. سپس می توانید کد را در پنجره کدی که نشان داده شده است، قرار دهید.
این ماکرو خاص فرض می کند که مقدار هگز مورد نظر در سلول A1 است و سپس رنگ A2 را بر اساس آن مقدار هگز تغییر می دهد. استفاده از ماکرو استفاده شما از اکسل را کمی کند می کند، زیرا هر بار که چیزی در کاربرگ تغییر می کند اجرا می شود. اگر ترجیح می دهید رنگ ها را فقط با اجرای دستی ماکرو تغییر دهید، می توانید به جای آن از این تغییر استفاده کنید:
Sub SetColors()
Dim rSource As Range
Dim rTarget As Range
Dim J As Integer
Set rSource = Range("A1:A50")
Set rTarget = Range("D1:D50")
For J = 1 To rSource.Cells.Count
rTarget.Cells(J).Interior.Color = CLng("&H" & rSource.Cells(J).Value)
Next J
End Sub
وقتی این ماکرو را اجرا می کنید، به محدوده اختصاص داده شده به متغیر rSource (A1:A50) نگاه می کند و از مقادیر آن محدوده برای تنظیم رنگ ها در محدوده اختصاص داده شده به متغیر rTarget (D1:D50) استفاده می کند. با فرض تغییر محدوده های اختصاص داده شده به rSource و rTarget، باید مطمئن شوید که هر دو محدوده دارای تعداد یکسانی سلول هستند.
تا کنون ماکروهای این نکته به سلول منبع حاوی مقدار هگز برای رنگ مورد نظر تکیه کردهاند. اگر ترجیح میدهید با مقادیر جداگانه RGB برای سلولها کار کنید، در نکته دیگری که ممکن است برایتان مفید باشد، توضیح داده شده است.