فروشگاه
انبارداری پیشرفته تحت اکسل

کار با رنگ ها در اکسل با استفاده از کدهای VBA

کار با رنگ ها در اکسل با استفاده از کدهای VBA این هم یک آموزش رایگان اکسل در دسته بندی بانک کد VBA در اکسل
در خدمت شما کاربران سایت آکادمی روح الله هستم

شما با دیدن این آموزش رایگان اکسل می توانید به راحتی در هر قسمت از نرم افزار های که در اکسل طراحی می کنید با استفاده از کد رنگ مورد نظر با یک کلیک رنگ مورد نظر
خود را در برنامه های که طراحی کردین اضافه و استفاده نمایید.

شما با دیدن فیلم آموزشی بالا به صورت کامل یاد خواهید گرفت با کد نویسی vba اکسل چطور کار خواهید کرد.

برای تنظیم رنگ پس زمینه سلول با استفاده از کد عددی، می توانید از خصوصیت ColorIndex در محدوده سلولی که می خواهید رنگ پس زمینه آن تغییر کند، استفاده کنید.

شما می توانید از مقادیر ColorIndex مختلفی برای تنظیم رنگ پس زمینه سلول استفاده کنید، به شرح زیر:

  • 0: بدون رنگ (سفید)
  • 1: سفید
  • 2: سیاه
  • 3: قرمز
  • 4: سبز
  • 5: آبی
  • 6: زرد
  • 7: بنفش
  • و غیره…
کار با رنگ ها در اکسل با استفاده از کدهای VBA

کار با رنگ ها در اکسل با استفاده از کدهای VBA

کار با رنگ ها در اکسل با استفاده از کدهای VBA

در این کد، “A1” محدوده سلولی است که می خواهید رنگ پس زمینه آن تغییر کند، و عدد 3 به معنی رنگ قرمز است. شما می توانید عدد دیگری برای تنظیم رنگ پس زمینه سلول استفاده کنید، به شرطی که مقدار آن در مجموعه مقادیر ColorIndex موجود باشد.

پیش نهاد آکادمی روح الله برای شما :
پیام خوش آمد گویی صوتی در اکسل با استفاده از vba

لازم به ذکر است که استفاده از کد عددی برای تنظیم رنگ پس زمینه سلول، ممکن است باعث ایجاد ناهماهنگی در رنگ ها بین نسخه های مختلف اکسل شود. بهتر است برای تنظیم رنگ پس زمینه سلول از کد رنگ های نام گذاری شده (مانند کد رنگی که در پاسخ قبلی ذکر شد) استفاده کنید.

برای تنظیم رنگ پس زمینه سلول به عنوان مثال به رنگ قرمز با استفاده از کد عددی، می توانید از کد زیر استفاده کنید:

 

کدهای رنگ در VBA برای تغییر رنگ سلول ها، پس زمینه و قلم متن استفاده می‌شوند. رنگ‌ها در VBA با استفاده از کد های RGB یا با نام رنگ مشخص می شوند. در زیر به توضیح کامل این کدها می پردازیم.

استفاده از کد RGB

در کد RGB، هر رنگ با یک کد سه رقمی مشخص می شود که شامل سه رنگ اصلی (قرمز، سبز و آبی) است. مقادیر هر کد بین 0 تا 255 می باشد. برای مثال، کد RGB برای رنگ سفید به صورت زیر است:

که به ترتیب نماینده رنگ قرمز، سبز و آبی است.

به طور مشابه، کدهای RGB برای برخی از رنگ های دیگر به صورت زیر می باشد:

کار با رنگ ها در اکسل با استفاده از کدهای VBA

کار با رنگ ها در اکسل با استفاده از کدهای VBA

برای تغییر رنگ سلول می توان از دستور زیر استفاده کرد:

پیش نهاد آکادمی روح الله برای شما :
اضافه کردن 98 در ابتدای شماره اکسل

و برای تغییر رنگ متن در یک سلول:

استفاده از نام رنگ

همچنین می توان از نام رنگ های پیش فرض در VBA استفاده کرد. برای این کار، ابتدا باید به کتابخانه VBA مربوطه را اضافه کرد:

 

میانگین رتبه 5/5 تعداد رای : 5
اکسل را حرفه ای یاد بگیر
نظر شما در مورد این مقاله چیست؟

نظر یا سوال شما در این مورد چیست؟

سلام دوست عزیز خوشحال میشوم نظر شما را در مورد این مقاله بدانم 👇

    مجید

    سلام من منظورم سطر ها یک در میان رنگی باشد و با فیلتر رنگ عوض نشود اشتباهیی ستون گفتم ببخشید

    پاسخ

      برای اینکه سطرها به صورت یک در میان رنگی باشند و این رنگ‌ها پس از فیلتر کردن نیز حفظ شوند، می‌توانید از کد 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 رقمی داخل سلول انجام می‌شود.
      موفق باشید

      پاسخ