ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
25 visibility
موضوع: آفیس توسط:

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 شما (کسی که برای انجام قالب بندی شرطی ضبط کرده اید) دوباره اجرا می شود.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

613 دیدگاه

10.8k کاربر

203 نفر آنلاین
0 عضو و 203 مهمان در سایت حاضرند
بازدید امروز: 11290
بازدید دیروز: 13001
بازدید کل: 19465584
...