PDA

View Full Version : آموزش: فرمت بندی شرطی سلول های true/false اکسل با آیکون - Conditional Formatting with Icon Sets in Excel



mazoolagh
دوشنبه 30 بهمن 1402, 19:18 عصر
شیت زیر را در نظر بگیرید:

155389

اگر ستون Units In Stock رو به شکل زیر فرمت بندی شرطی کنیم:

155390

نتیجه به شکل زیر خواهد شد:

155391

mazoolagh
دوشنبه 30 بهمن 1402, 19:27 عصر
حالا اگر همین ستون رو با Icon Set از نوع Traffic Light سه رنگ :

155392

و با شرایط زیر فرمت بندی کنیم:

155393

نتیجه به شکل زیر خواهد بود:

155394

mazoolagh
دوشنبه 30 بهمن 1402, 20:06 عصر
تا اینجا کار راحت هست و نکته خاصی هم نداره،
حالا فرض کنید میخواهیم ستون Discontinued رو با Icon Set از نوع Indicator فرمت کنیم:

155395

جوری که مقدار true با √ و false با X نمایش داده بشن.

در قدم اول مقادیر true/false رو با مقادیر عددی 1/0 جایگزین میکنیم (چرا؟):

155397

و بعد rule رو به یکی از دو شکل زیر تعریف میکنیم (به show icons only دقت کنید):

155399155398

که نتیجه اون به شکل زیر خواهد شد:

155400

mazoolagh
دوشنبه 30 بهمن 1402, 20:39 عصر
حالا فرض کنید میخواهیم در ستون Discontinued با double-click مقدار اون بین 0 و 1 جابجا بشه (toggle)،

از Developer Tab گزینه Visual Basic رو انتخاب میکنیم:

155401

و مطمئن میشیم که sheet درست رو انتخاب کردیم:

155402
و رخداد BeforeDoubleClick رو انتخاب میکنیم:

155403

و کد زیر رو مینویسیم:

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("C2:C10")) Is Nothing Then
Cancel = True
With Target
If .Value = "" Or .Value = 0 Then
.Value = 1
Else
.Value = 0
End If
End With
End If
End Sub

abdoreza57
دوشنبه 30 بهمن 1402, 23:54 عصر
سلام و به دنیا سپاس و قدردانی بابت آموزشهای مفید و خوبتون امیدوارم همیشه موفق و سلامت باشید
مطالب بسیار عالی و کامل بود فقط چند تا سوال داشتم

اول اینکه امکان کد نویسی برای رویداد کلیک وجود نداره ؟ چون تو لیست فقط دبل کلیک بود وقتی هم تغییر به کلیک میکنم کار نمیکنه
دوم چرا کدها ذخیره نمیشه ؟ باذخیره کد خطا میده درحالی که کد تو برنامه کار میکنه با بستن فایل کد هم حذف میشه!
سوم تاپیک اخبری که ایجاد کردم درهمین زمینه با توجه به مطالب جامع تون غیر ضروری به نظر میاد ولی نمیتونم حذف کنم لطف کنید تاپیک اضافی منو پاک کنید

mazoolagh
سه شنبه 01 اسفند 1402, 20:06 عصر
سلام و به دنیا سپاس و قدردانی بابت آموزشهای مفید و خوبتون امیدوارم همیشه موفق و سلامت باشید
سلام دوباره، و تشکر از لطف شما. متقابلا برای شما آرزوی موفقیت بیشتر دارم.


امکان کد نویسی برای رویداد کلیک وجود نداره ؟ چون تو لیست فقط دبل کلیک بود وقتی هم تغییر به کلیک میکنم کار نمیکنه
نه،
این رویداد براش تعریف نشده.
ولی از همون رویداد پیشفرض SelectionChange میتونین استفاده کنین و target.address رو چک کنین که کدوم سلول کلیک شده.

شما همین کد پست 4 رو میتونین در این رویداد استفاده کنین - البته باید cancel=true رو بردارین!
و رفتار toggle با کلیک خواهد بود.


چرا کدها ذخیره نمیشه ؟ باذخیره کد خطا میده درحالی که کد تو برنامه کار میکنه با بستن فایل کد هم حذف میشه!
خطا نمیده،
در واقع میپرسه که میخواین به فرمت xlsm (macro enabled) ذخیره بشه،
یا همون فرمت ساده بدون کد و ماکرو (xlsx) :

155406

اینجا باید No رو بزنین و بعد فایل رو به شکل زیر save کنین:

155407

به این ترتیب کدها در فایل اکسل شما ذخیره میشه.

اگر Yes رو بزنین فایل بدون کد و ماکرو ذخیره میشه.

آیکون این فایل ها هم متفاوت هست:

155408

abdoreza57
سه شنبه 01 اسفند 1402, 20:59 عصر
بازم ممنون
کامل تر این نمیشه .
همیشه پایدار باشید استاد