کار با رنگ ها در اکسل با استفاده از کدهای VBA
- آخرین بروزرسانی: 31 اردیبهشت 1402
کار با رنگ ها در اکسل با استفاده از کدهای VBA این هم یک آموزش رایگان اکسل در دسته بندی بانک کد VBA در اکسل
در خدمت شما کاربران سایت آکادمی روح الله هستم
شما با دیدن این آموزش رایگان اکسل می توانید به راحتی در هر قسمت از نرم افزار های که در اکسل طراحی می کنید با استفاده از کد رنگ مورد نظر با یک کلیک رنگ مورد نظر
خود را در برنامه های که طراحی کردین اضافه و استفاده نمایید.
شما با دیدن فیلم آموزشی بالا به صورت کامل یاد خواهید گرفت با کد نویسی vba اکسل چطور کار خواهید کرد.
برای تنظیم رنگ پس زمینه سلول با استفاده از کد عددی، می توانید از خصوصیت ColorIndex در محدوده سلولی که می خواهید رنگ پس زمینه آن تغییر کند، استفاده کنید.
شما می توانید از مقادیر ColorIndex مختلفی برای تنظیم رنگ پس زمینه سلول استفاده کنید، به شرح زیر:
- 0: بدون رنگ (سفید)
- 1: سفید
- 2: سیاه
- 3: قرمز
- 4: سبز
- 5: آبی
- 6: زرد
- 7: بنفش
- و غیره…
1 2 3 |
Sub ColorIndex() Range("A1:A10").Interior.ColorIndex = 3 End Sub |
کار با رنگ ها در اکسل با استفاده از کدهای VBA
در این کد، “A1” محدوده سلولی است که می خواهید رنگ پس زمینه آن تغییر کند، و عدد 3 به معنی رنگ قرمز است. شما می توانید عدد دیگری برای تنظیم رنگ پس زمینه سلول استفاده کنید، به شرطی که مقدار آن در مجموعه مقادیر ColorIndex موجود باشد.
لازم به ذکر است که استفاده از کد عددی برای تنظیم رنگ پس زمینه سلول، ممکن است باعث ایجاد ناهماهنگی در رنگ ها بین نسخه های مختلف اکسل شود. بهتر است برای تنظیم رنگ پس زمینه سلول از کد رنگ های نام گذاری شده (مانند کد رنگی که در پاسخ قبلی ذکر شد) استفاده کنید.
برای تنظیم رنگ پس زمینه سلول به عنوان مثال به رنگ قرمز با استفاده از کد عددی، می توانید از کد زیر استفاده کنید:
کدهای رنگ در VBA برای تغییر رنگ سلول ها، پس زمینه و قلم متن استفاده میشوند. رنگها در VBA با استفاده از کد های RGB یا با نام رنگ مشخص می شوند. در زیر به توضیح کامل این کدها می پردازیم.
استفاده از کد RGB
در کد RGB، هر رنگ با یک کد سه رقمی مشخص می شود که شامل سه رنگ اصلی (قرمز، سبز و آبی) است. مقادیر هر کد بین 0 تا 255 می باشد. برای مثال، کد RGB برای رنگ سفید به صورت زیر است:
1 |
RGB(255, 255, 255) |
که به ترتیب نماینده رنگ قرمز، سبز و آبی است.
به طور مشابه، کدهای RGB برای برخی از رنگ های دیگر به صورت زیر می باشد:
برای تغییر رنگ سلول می توان از دستور زیر استفاده کرد:
1 |
Range("A1").Interior.Color = RGB(255, 255, 255) 'تغییر رنگ پس زمینه سلول به سفید |
و برای تغییر رنگ متن در یک سلول:
1 |
Range("A1").Font.Color = RGB(255, , ) 'تغییر رنگ متن سلول به قرمز |
استفاده از نام رنگ
همچنین می توان از نام رنگ های پیش فرض در VBA استفاده کرد. برای این کار، ابتدا باید به کتابخانه VBA مربوطه را اضافه کرد:
1 2 3 4 5 6 7 8 |
Option Explicit Public Enum vbColor vbBlack = & vbRed = 255& vbGreen = 65280& vbYellow = 65535& vbBlue = 16711680& vbMagenta = |
سلام من منظورم سطر ها یک در میان رنگی باشد و با فیلتر رنگ عوض نشود اشتباهیی ستون گفتم ببخشید
برای اینکه سطرها به صورت یک در میان رنگی باشند و این رنگها پس از فیلتر کردن نیز حفظ شوند، میتوانید از کد VBA زیر استفاده کنید. این کد تمامی سطرهای مرئی را به صورت یک در میان رنگی میکند.
1. اکسل را باز کنید و فایل مورد نظر خود را انتخاب کنید.
2. کلیدهای
Alt + F11
را فشار دهید تا محیط VBA باز شود.3. از منوی
Insert
، گزینهModule
را انتخاب کنید تا یک ماژول جدید ایجاد شود.4. کد زیر را در ماژول جدید وارد کنید:
Sub ColorAlternateRows()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim rowIndex As Integer
Dim visibleRows As Integer
' Set your worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' Change "Sheet1" to your sheet name
' Define the range to apply the color
Set rng = ws.UsedRange
' Initialize variables
rowIndex = 1
visibleRows = 0
' Loop through rows in the defined range
For Each cell In rng.Columns(1).Cells
If Not cell.EntireRow.Hidden Then
visibleRows = visibleRows + 1
If visibleRows Mod 2 = 1 Then
cell.EntireRow.Interior.Color = RGB(221, 235, 247) ' Light blue color
Else
cell.EntireRow.Interior.ColorIndex = xlNone ' No fill color
End If
End If
Next cell
End Sub
5. برای اجرای کد، به محیط اکسل بازگشته و کلیدهای
Alt + F8
را فشار دهید تا پنجره اجرای ماکرو باز شود.6. ماکرو
ColorAlternateRows
را انتخاب کرده و بر رویRun
کلیک کنید.این کد تمامی سطرهای مرئی را به صورت یک در میان رنگی میکند و این حالت پس از فیلتر کردن نیز حفظ میشود. اگر نام شیت شما “Sheet1” نیست، باید نام شیت خود را در خط
Set ws = ThisWorkbook.Sheets("Sheet1")
تغییر دهید. همچنین میتوانید رنگهای دلخواه خود را با تغییر مقادیرRGB
تنظیم کنید.ممنون فقط وقتی فیلتر میشود ترتیب سطرها رنگی بهم میریزد و یک در میان در فیلتر رنگی نمی ماند امکانش هست این مورد و اصلاح بفرمایید. ممنون
برای اینکه رنگبندی سطرها پس از فیلتر کردن نیز به صورت یک در میان باقی بماند، باید از یک رویکرد متفاوت استفاده کنیم. به جای رنگآمیزی مستقیم سطرها، باید بررسی کنیم که سطرهای مرئی به صورت یک در میان رنگآمیزی شوند. در زیر کد بهروز شدهای ارائه شده که این مسئله را حل میکند:
1. اکسل را باز کنید و فایل مورد نظر خود را انتخاب کنید.
2. کلیدهای
Alt + F11
را فشار دهید تا محیط VBA باز شود.3. از منوی
Insert
، گزینهModule
را انتخاب کنید تا یک ماژول جدید ایجاد شود.4. کد زیر را در ماژول جدید وارد کنید:
Sub ColorAlternateVisibleRowsInTable()
Dim ws As Worksheet
Dim tblRange As Range
Dim cell As Range
Dim visibleRows As Integer
Dim rowIndex As Long
' Set your worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' Change "Sheet1" to your sheet name
' Define the range of your table
Set tblRange = ws.Range("A1:D10") ' Change this range to your table range
' Initialize variables
visibleRows = 0
' Loop through each row in the table range
For Each cell In tblRange.Columns(1).Cells
If Not cell.EntireRow.Hidden Then
visibleRows = visibleRows + 1
If visibleRows Mod 2 = 1 Then
cell.EntireRow.Interior.Color = RGB(221, 235, 247) ' Light blue color
Else
cell.EntireRow.Interior.ColorIndex = xlNone ' No fill color
End If
End If
Next cell
End Sub
5. برای اجرای کد، به محیط اکسل بازگشته و کلیدهای
Alt + F8
را فشار دهید تا پنجره اجرای ماکرو باز شود.6. ماکرو
ColorAlternateVisibleRowsInTable
را انتخاب کرده و بر رویRun
کلیک کنید.این کد هر بار که اجرا شود، بررسی میکند که سطرهای مرئی در محدوده جدول به صورت یک در میان رنگی باشند و این حالت حتی پس از فیلتر کردن نیز حفظ میشود. در خط
Set tblRange = ws.Range("A1:D10")
، محدوده جدول خود را تنظیم کنید. اگر نام شیت شما “Sheet1” نیست، باید نام شیت خود را در خطSet ws = ThisWorkbook.Sheets("Sheet1")
تغییر دهید. همچنین میتوانید رنگهای دلخواه خود را با تغییر مقادیرRGB
تنظیم کنید.هر بار که جدول را فیلتر میکنید، باید این ماکرو را دوباره اجرا کنید تا رنگبندی سطرهای مرئی بهروز شود.
سلام استاد
من یک جدول دارم میخواهم یک در میان ستون ها رنگ ثابت داشته باشد بطوری که وقتی جدول را فیلتر هم می کنم باز ستون های نمایش داده شده یک در میان رنگی باشد لطفا راهنمایی بفرمایید.ممنون
سلام ارادت خدمت شما دوست عزیز
برای ایجاد یک جدول اکسل که ستونها به صورت یک در میان رنگی باشند و این رنگبندی حتی پس از فیلتر کردن نیز حفظ شود، میتوانید از کد VBA استفاده کنید. این کد VBA رنگبندی ستونها را به گونهای انجام میدهد که در هر حالتی (قبل و بعد از فیلتر کردن) ستونهای نمایش داده شده یک در میان رنگی باشند.
1. اکسل را باز کنید و فایل مورد نظر خود را انتخاب کنید.
2. کلیدهای
Alt + F11
را فشار دهید تا محیط VBA باز شود.3. از منوی
Insert
، گزینهModule
را انتخاب کنید تا یک ماژول جدید ایجاد شود.4. کد زیر را در ماژول جدید وارد کنید:
Sub ColorAlternateColumns()
Dim ws As Worksheet
Dim rng As Range
Dim colIndex As Integer
Dim visibleColumns As Integer
' Set your worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' Change "Sheet1" to your sheet name
' Define the range to apply the color
Set rng = ws.UsedRange
' Initialize variables
colIndex = 1
visibleColumns = 0
' Loop through columns in the defined range
For Each cell In rng.Rows(1).Cells
If Not cell.EntireColumn.Hidden Then
visibleColumns = visibleColumns + 1
If visibleColumns Mod 2 = 1 Then
cell.EntireColumn.Interior.Color = RGB(221, 235, 247) ' Light blue color
Else
cell.EntireColumn.Interior.ColorIndex = xlNone ' No fill color
End If
End If
Next cell
End Sub
5. برای اجرای کد، به محیط اکسل بازگشته و کلیدهای
Alt + F8
را فشار دهید تا پنجره اجرای ماکرو باز شود.6. ماکرو
ColorAlternateColumns
را انتخاب کرده و بر رویRun
کلیک کنید.این کد تمام ستونهای مرئی را به صورت یک در میان رنگی میکند و این حالت پس از فیلتر کردن نیز حفظ میشود. اگر نام شیت شما “Sheet1” نیست، باید نام شیت خود را در خط
Set ws = ThisWorkbook.Sheets("Sheet1")
تغییر دهید. همچنین میتوانید رنگهای دلخواه خود را با تغییر مقادیرRGB
تنظیم کنید.موفق باشید
سلام ممنون از راهنمایی
استاد با عرض پوشش من سطر ها یک درمیان میخواستم اشتباهی ستون زدم که با فیلتر کردن هم رنگ حفظ شود فقط در صفحه مورد نظر جداول دیگر هم هست چطور میشود جدول خاص فقط این ماژول کار کند.
باز هم ممنون از شما
برای اینکه رنگآمیزی سطرها به صورت یک در میان و فقط برای یک جدول خاص انجام شود، و این رنگبندی حتی پس از فیلتر کردن حفظ شود، میتوانید کد VBA را به گونهای تنظیم کنید که فقط بر روی محدوده خاصی از جدول اعمال شود.
در اینجا یک مثال کامل از نحوه انجام این کار ارائه میشود:
1. اکسل را باز کنید و فایل مورد نظر خود را انتخاب کنید.
2. کلیدهای
Alt + F11
را فشار دهید تا محیط VBA باز شود.3. از منوی
Insert
، گزینهModule
را انتخاب کنید تا یک ماژول جدید ایجاد شود.4. کد زیر را در ماژول جدید وارد کنید:
Sub ColorAlternateRowsInTable()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim visibleRows As Integer
Dim i As Long
' Set your worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' Change "Sheet1" to your sheet name
' Define the range of your table
Set rng = ws.Range("A1:D10") ' Change this range to your table range
' Initialize variable
visibleRows = 0
' Loop through rows in the defined range
For i = 1 To rng.Rows.Count
If Not rng.Rows(i).Hidden Then
visibleRows = visibleRows + 1
If visibleRows Mod 2 = 1 Then
rng.Rows(i).Interior.Color = RGB(221, 235, 247) ' Light blue color
Else
rng.Rows(i).Interior.ColorIndex = xlNone ' No fill color
End If
End If
Next i
End Sub
5. برای اجرای کد، به محیط اکسل بازگشته و کلیدهای
Alt + F8
را فشار دهید تا پنجره اجرای ماکرو باز شود.6. ماکرو
ColorAlternateRowsInTable
را انتخاب کرده و بر رویRun
کلیک کنید.این کد تمامی سطرهای مرئی در محدوده مشخص شده را به صورت یک در میان رنگی میکند و این حالت پس از فیلتر کردن نیز حفظ میشود. در خط
Set rng = ws.Range("A1:D10")
، محدوده جدول خود را تنظیم کنید. اگر نام شیت شما “Sheet1” نیست، باید نام شیت خود را در خطSet ws = ThisWorkbook.Sheets("Sheet1")
تغییر دهید. همچنین میتوانید رنگهای دلخواه خود را با تغییر مقادیرRGB
تنظیم کنید.سلام ممنون از راهنمایی
استاد با عرض پوشش من سطر ها یک درمیان میخواستم اشتباهی ستون زدم که با فیلتر کردن هم رنگ حفظ شود فقط در صفحه مورد نظر جداول دیگر هم هست چطور میشود جدول خاص فقط این ماژول کار کند.
باز هم ممنون از شما
سلام استاد ، چگونه میتونم دی ریک سلول یک عدد 4 رقمی بنویسم که دو رقم اول اون بی رنگ یا رنگ دیگه ای باشه؟؟؟ ممنون میشم راهنماییم کنید.
سلام سلام ارادت خدمت شما دوست عزیز
برای دی ریکت کردن یک سلول اکسل به شکلی که دو رقم اول آن بی رنگ یا با رنگ دیگری باشند، میتوانید از قوانین قالببندی شرطی (Conditional Formatting) در اکسل استفاده کنید. در اینجا نحوه انجام این کار را توضیح میدهم:
1. ابتدا متن/عدد مورد نظر را وارد سلول مربوطه کنید.
2. سلول را انتخاب کنید (با کلیک راست روی سلول).
3. در منوی “صفحه اصلی” (Home) به قسمت “قالببندی شرطی” (Conditional Formatting) بروید.
4. در این قسمت، گزینه “نقشه رنگی تاییدیه” (Color Scales) را انتخاب کنید.
5. در منوی باز شده، یکی از قالبهای نقشه رنگی انتخاب کنید که به نیاز شما میخورد. برای مثال، میتوانید گزینه “سه رنگ از تیره به روشن” (3-Color Scale) را انتخاب کنید.
6. پس از انتخاب قالب، مقادیر حداقل و حداکثر را برای رنگهای مختلف تعیین کنید. برای مثال، میتوانید حداقل را 1000 و حداکثر را 9999 قرار دهید و رنگهای دیگر را به ترتیب تعیین کنید.
7. با کلیک بر روی “تأیید” (OK)، قالببندی شرطی اعمال میشود و سلول مورد نظر به تناسب با مقدار داخلی آن، رنگ میگیرد.
با انجام این مراحل، سلول مورد نظر دیگری رنگ دار نخواهد بود و تغییر رنگ بر اساس دو رقم اول عدد 4 رقمی داخل سلول انجام میشود.
موفق باشید