Kees یک کاربرگ دارد که از قالب بندی شرطی به طور گسترده استفاده می کند. با این حال، زمانی که کاربران اطلاعات را کپی و جایگذاری میکنند یا زمانی که از کشیدن و رها کردن برای ویرایش کاربرگ استفاده میکنند، قالببندی شرطی به هم میخورد. او در مورد بهترین راه برای جلوگیری از این اتفاق می پرسد.
این به این دلیل اتفاق می افتد که قالب بندی شرطی دقیقاً به این شکل در نظر گرفته می شود - قالب بندی. یک کپی و چسباندن استاندارد (یا یک ویرایش کشیدن و رها کردن) همه چیز از جمله قالببندی را کپی میکند. این بدان معناست که سلولهای هدف قالببندی سلولهای مبدأ را خواهند داشت، نه قالببندی سلولهای هدف (از جمله هر قالببندی شرطی که ممکن است در سلولهای هدف بوده باشد).
پس پاسخ این است که به کاربران بگوییم کپی و پیست استاندارد انجام ندهند. در عوض، آنها باید از گزینه های paste برای چسباندن هر چیزی (یا همه چیز) به جز قالب بندی استفاده کنند.
البته گزینه دیگر محافظت از کاربرگ است تا کاربر نتواند چیزی را کپی و پیست کند. این ممکن است برای کاربران شما کمی شدید باشد، زیرا ممکن است بخواهید آنها تغییراتی ایجاد کنند. (شما فقط نمی خواهید آنها قالب بندی شرطی را به هم بزنند.)
این منجر به رویکرد کلان می شود. اگر میتوانید ماکرویی را ضبط کنید که قالببندی شرطی را روی سلولها اعمال میکند، میتوانید چند ماکرو اضافی ایجاد کنید که در صورت نیاز آن ماکرو ضبط شده را اعمال میکند. برای مثال، اجازه دهید بگوییم که ماکرویی که ضبط میکنید چیزی کوتاه و جذاب مانند SetCondFormat نامیده میشود.
سپس وارد ویرایشگر ویژوال بیسیک شوید و در پنجره فوری موارد زیر را وارد کنید:
? Cells.SpecialCells(xlCellTypeAllFormatConditions).Address
با فرض اینکه قالب بندی شرطی خود را کاملاً تنظیم کرده اید، باید یک خط - شاید یک خط طولانی - که آدرس سلول ها و محدوده هایی را که از قالب بندی شرطی استفاده می کنند را نشان دهد. چیزی شبیه به این خواهد بود:
$B$3:$B$50,$D$3:$D$50,$G$3:$I$20
بعد، ماکرو زیر را به ماژول کد ThisWorksheet اضافه کنید:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Const cCFAddress = "$B$3:$B$50,$D$3:$D$50,$G$3:$I$20"
On Error Resume Next
Set r = Range(cCFAddress)
On Error GoTo 0
If Not r Is Nothing Then
If Not Application.Intersect(Target, r) Is Nothing Then
SetCondFormat
End If
End If
End Sub
نکته کلیدی در اینجا این است که مطمئن شوید که ثابت cCFAddress برابر با آنچه که هنگام مشاهده آدرسها در پنجره فوری برگردانده شده است تنظیم شده است. (اگر بعداً قالب بندی شرطی را تغییر دادید، می توانید دوباره از ترفند پنجره فوری استفاده کنید و به سادگی خط را در ماکرو بالا تغییر دهید.)
ماکرو با هر بار تغییر در کاربرگ اجرا می شود. بررسی می کند که آیا آدرس تغییر یافته (که در متغیر Target ارسال شده است) بخشی از سلول های اصلی است که دارای قالب های شرطی هستند یا خیر. اگر چنین است، سپس SetCondFormat شما (کسی که برای انجام قالب بندی شرطی ضبط کرده اید) دوباره اجرا می شود.