返回列表 上一主題 發帖

[發問] VBA點選儲存格指定範圍自動反色

回復 10# Hyuan


舉幾個實例說明, 最好再上傳模擬檔案!!

TOP

本帖最後由 n7822123 於 2018-12-9 15:46 編輯

回復 10# Hyuan

是這樣嗎? 紅色字部分請自行更改!
我沒有用到定義名稱的部分

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set 範圍 = [C4:H10]   '請自行更改要變色範圍,下面程式的顏色也自行更改
If Intersect(Target, 範圍) Is Nothing Then Exit Sub '選取範圍與設定範圍無交集則離開
範圍.Interior.ColorIndex = -4142 '先恢復無顏色
For Each rg In Target  '逐一確認選取的範圍,若在設定範圍內則整列變色(選取的範圍有可能在設定範圍外)
  If Not Intersect(rg, 範圍) Is Nothing Then Cells(rg.Row, 範圍(1).Column).Resize(, 範圍.Columns.Count).Interior.Color = RGB(100, 255, 255)
Next
Intersect(Target, 範圍).Interior.Color = RGB(255, 0, 0) '逐一確認選取的範圍,然後變色
End Sub

儲存格變色.rar (11.11 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 11# 准提部林

附上附件
請教准大要如何做到如附件的畫面。
謝謝你。

TT20170225-02(選取儲存格,列變色).zip (9.94 KB)

TOP

回復 11# 准提部林
表達不完整,原附件作廢。

TT20170225-02(選取儲存格,列變色).zip (9.95 KB)

TOP

本帖最後由 n7822123 於 2018-12-9 20:23 編輯

回復 14# Hyuan

紅色字部分,可自行更改

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set 範圍 = [I7:O18]   '請自行更改要變色範圍,下面程式的顏色也自行更改
If Intersect(Target, 範圍) Is Nothing Then Exit Sub '選取範圍與設定範圍無交集則離開
範圍.Interior.ColorIndex = -4142 '先恢復無顏色
For Each rg In Target  '逐一確認選取的範圍,若在設定範圍內則整列變色(選取的範圍有可能在設定範圍外)
  If Not Intersect(rg, 範圍) Is Nothing Then Cells(rg.Row, 範圍(1).Column).Resize(, 範圍.Columns.Count).Interior.Color = RGB(255, 255, 0)
  If Not Intersect(rg, 範圍) Is Nothing Then Cells(範圍(1).Row, rg.Column).Resize(範圍.Rows.Count).Interior.Color = RGB(255, 255, 0)
Next
Intersect(Target, 範圍).Interior.Color = RGB(255, 0, 0) '確認選取的範圍,然後變色
End Sub

TT20170225-02(選取儲存格,列變色)+1.rar (9.18 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 12# n7822123
謝謝大大鼎力幫忙。
希望儲存格所在的[行]也有顏色,如附件。

儲存格變色.zip (7.66 KB)

TOP

回復 16# Hyuan


  已回覆你了,上上樓
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim xA As Range, SelArea As Range, xR As Range
Set xA = [I7:O18]: xA.Interior.ColorIndex = 0
Set SelArea = Intersect(xA, Target)
If SelArea Is Nothing Then Exit Sub
For Each xR In SelArea
   xA.Rows(xR.Row - xA.Row + 1).Interior.Color = vbYellow
   xA.Columns(xR.Column - xA.Column + 1).Interior.Color = vbYellow
Next
SelArea.Interior.Color = vbRed
End Sub

TOP

湊一腳 參考看看
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim xA As Range, xR As Range
  3.     Set xA = [I7:O18]
  4.     xA.Interior.ColorIndex = 0
  5.     If Intersect(xA, Target) Is Nothing Then Exit Sub
  6.     For Each xR In xA.Columns
  7.         If Not Intersect(xR, Target) Is Nothing Then xR.Interior.Color = vbYellow
  8.     Next
  9.     For Each xR In xA.Rows
  10.         If Not Intersect(xR, Target) Is Nothing Then xR.Interior.Color = vbYellow
  11.     Next
  12.     Target.Interior.Color = vbRed
  13. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 19# GBKEE

很感謝n大、准大、G大三位鼎力相助。感謝~~~

也感謝有真麼好的討論園地。

TOP

        靜思自在 : 修行要繫緣修心,藉事練心,隨處養心。
返回列表 上一主題