Lập trình VBA để tùy chỉnh độ đậm nhạt của màu nền trong Excel
Cách 1: Xử Lý RGB Ở cách này, màu được chỉnh sẽ gần nhất nhưng không được chính xác nhất. Tăng độ nhạt Sub FillColor_Lighten() ‘PURPOSE: Lighten the cell fill by a shade while maintaining Hue (base Color) ‘SOURCE: www.TheSpreadsheetGuru.comDim HEXcolor As String Dim ...
Cách 1: Xử Lý RGB
Ở cách này, màu được chỉnh sẽ gần nhất nhưng không được chính xác nhất.
Tăng độ nhạt
Sub FillColor_Lighten() ‘PURPOSE: Lighten the cell fill by a shade while maintaining Hue (base Color) ‘SOURCE: www.TheSpreadsheetGuru.comDim HEXcolor As String Dim cell As Range Dim Lighten As Integer Dim r As Integer Dim g As Integer Dim b As Integer Dim r_new As Integer Dim g_new As Integer Dim b_new As Integer ‘Shade Settings ‘Optimize Code ‘Loop through each cell in selection ‘Determine HEX color code ‘Determine current RGB color code ‘Calculate new RGB color code ‘Debug.Print r_new, g_new, b_new ‘Change enitre selection’s fill color Next cell End Sub |
Tăng độ đậm
Sub FillColor_Darken() ‘PURPOSE: Darken the cell fill by a shade while maintaining Hue (base Color) ‘SOURCE: www.TheSpreadsheetGuru.comDim HEXcolor As String Dim cell As Range Dim Darken As Integer Dim r As Integer Dim g As Integer Dim b As Integer Dim r_new As Integer Dim g_new As Integer Dim b_new As Integer ‘Shade Settings ‘Optimize Code ‘Loop through each cell in selection ‘Determine HEX color code ‘Determine current RGB color code ‘Calculate new RGB color code ‘Change enitre selection’s fill color Next cell End Sub |
Cách 2: Điều Chỉnh Đặc Tính Tintandshade
Cách làm này hoàn toàn không có mặt trái. Tuy nhiên áp dụng với một số màu thì không được tốt lắm. Ví dụ, khi chỉnh nhạt màu RGB(0,176,80) hay RGB(0,32,96), nó sẽ thành màu sáng hơn thay vì màu nhạt hơn. Ngoài ra thì các màu khác đều ổn.
Tăng độ nhạt
Sub LightenFill() ‘PURPOSE: Lighten cell or shape fill 1 shade ‘SOURCE: www.TheSpreadsheetGuru.comDim cell As Range Dim Lighten As Double Lighten = 0.2 ‘(must be between 0 and 1) ‘Modify all fill colors within selected cells End Sub |
Tăng độ đậm
Sub DarkenFill() ‘PURPOSE: Darken cell or shape fill 1 shade ‘SOURCE: www.TheSpreadsheetGuru.comDim cell As Range Dim Darken As Double Darken = 0.2 ‘(must be between 0 and 1) ‘Modify all fill colors within selected cells End Sub |
Cách 3: Chuyển Từ Mã Màu RGB Sang HSV
Mã lập trình này có thể không hoạt động tốt với một số màu như cách một. Ý tưởng đằng sau cách làm này là chuyển đổi từ mã màu RGB sang mã màu HSV(màu sắc, độ bão hòa, độ sáng). Ở mã màu HSV, bạn có thể điêu chỉnh chính xác giá trị trong khi vẫn giữ lại màu sắc và độ bão hòa, quan trọng là nó cho phép bạn giữ lại màu cơ bản. Do đó sau khi xử lý với mã HSV, chuyển nó trở lại mã RGB và áp dụng vào màu nền.
Sub HSV_Shading() ‘PURPOSE: To lighten or darken a cell fill color while maintaining Hue (base color) ‘SOURCE: www.TheSpreadsheetGuru.com ‘LOGIC SOURCE: http://lodev.org/cgtutor/color.html#The_HSL_Color_Model_Dim HEXcolor As String Dim cell As Range Dim ShadeRate As Integer ‘Rate You wish to lighten (darken) ‘Store ActiveCell to a variable ‘Determine HEX color code ‘Determine current RGB color code ‘******************** If maxColor = 0 Then If s = 0 Then h = h / 6 ‘Output The HSV Color Code with adjustment rate ‘******************** If s = 0 Then h = h * 6 Select Case i ‘Output New RGB Color Code ‘Change Cell Fill To New Color End Sub |