返回列表 上一主題 發帖

[發問] 請大師們幫忙自動變換顏色,謝謝

[發問] 請大師們幫忙自動變換顏色,謝謝

請教各位大師

我想要依"公司清單"這個sheet裡列的公司,讓"設備列表"這個sheet裡面的設備自動整列變色成為"公司清單"sheet內對應的顏色
因本身對顏色辨識能力較弱,其望可以有相應的色碼以供辨識
希望能相容於excel 2003~2010
請各位大師幫忙,感謝
測試檔案.zip (3.97 KB)
天天空空啊~

請教各位大師

我想要依"公司清單"這個sheet裡列的公司,讓"設備列表"這個sheet裡面的設備自動整列變色成為 ...
leirex1201 發表於 2015-5-8 18:27

印象中在 Excel 2003 似乎沒有可直接抓取儲存格底色的公式.

你的需求用 Excel VBA 較容易達成:
  1. Private Sub cbGetColor_Click()
  2.   Dim lRow&
  3.   Dim vD
  4.   
  5.   Set vD = CreateObject("Scripting.Dictionary")

  6.   lRow = 2
  7.   With Sheets("公司清單")
  8.     Do While .Cells(lRow, 1) <> ""
  9.       vD(.Cells(lRow, 2).Text) = .Cells(lRow, 3).Interior.ColorIndex
  10.       lRow = lRow + 1
  11.     Loop
  12.   End With
  13.   
  14.   lRow = 2
  15.   With Sheets("設備列表")
  16.     Do While .Cells(lRow, 1) <> ""
  17.       .Rows(lRow).Interior.ColorIndex = vD(.Cells(lRow, 2).Text)
  18.       lRow = lRow + 1
  19.     Loop
  20.   End With
  21. End Sub
複製代碼
當檔案內容有更新時,點一下 "更新底色" 按鈕即可.
[attach]20896[/attach]

測試檔案-a.zip (11.89 KB)

TOP

本帖最後由 lpk187 於 2015-5-9 11:38 編輯

回復 1# leirex1201

也可以用工作表事件來達成自動化
當B欄以後到E欄有變化時就會達成目的
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Row > 1 And Target.Column < 6 And Cells(Target.Row, 2) <> "" Then
  3.     Set col = Sheets("公司清單").Columns(2).Find(Cells(Target.Row, 2), , , , , 2)
  4.     Range(Cells(Target.Row, 1), Cells(Target.Row, 1).End(xlToRight)).Interior.Color = _
  5.     col.Offset(0, 1).Interior.Color
  6. End If
  7. End Sub
複製代碼
測試檔案.rar (14.21 KB)

TOP

印象中在 Excel 2003 似乎沒有可直接抓取儲存格底色的公式.

你的需求用 Excel VBA 較容易達成:當檔案內 ...
luhpro 發表於 2015-5-9 06:55



感謝luhpro大師回覆

請問要貼到wookbook嗎?謝謝
天天空空啊~

TOP

本帖最後由 leirex1201 於 2015-5-11 10:07 編輯
回復  leirex1201

也可以用工作表事件來達成自動化
當B欄以後到E欄有變化時就會達成目的
lpk187 發表於 2015-5-9 11:36



感謝lpk187大師回覆

If Target.Row > 1 And Target.Column < 10 And Cells(Target.Row, 1) <> "" Then
以上是change的事件範圍嗎
Range(Cells(Target.Row, 1), Cells(Target.Row, 1).End(xlToRight)).Interior.Color = _
    col.Offset(0, 1).Interior.Color
但我不懂這個,
我想要設定變色的範圍,只要B欄位有值,不管後面的欄位有沒有值,比如A10~P10全部變色,請大師幫幫忙,謝謝
天天空空啊~

TOP

回復 5# leirex1201
只有B欄的話可以改成這樣
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Address = Cells(Target.Row, "B").Address Then
  3.     Set col = Sheets("公司清單").Columns(2).Find(Cells(Target.Row, 2), , , , , 2)
  4.     Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Interior.Color = _
  5.     col.Offset(0, 1).Interior.Color
  6. End If
  7. End Sub
複製代碼

TOP

回復  leirex1201
只有B欄的話可以改成這樣
lpk187 發表於 2015-5-11 10:24


感謝lpk187大大再一次幫忙

可能是我說明的不清楚
我的意思是A2有值"1",B2有值"遠傳電信",而C2:K2都是空白,但我想把A2:K2全部變色,感謝大師
天天空空啊~

TOP

回復 7# leirex1201

嗯!那就改成下列
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column < 3 And Target.Row > 1 And Cells(Target.Row, "B") <> "" And Cells(Target.Row, "A") <> "" Then
  3.     Set col = Sheets("公司清單").Columns(2).Find(Cells(Target.Row, 2), , , , , 2)
  4.     Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Interior.Color = _
  5.     col.Offset(0, 1).Interior.Color
  6. End If
  7. End Sub
複製代碼

TOP

回復 8# lpk187

改成下列的話,只要A欄和B欄其中一個無值的話回復空白
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column < 3 And Target.Row > 1 And Cells(Target.Row, "B") <> "" And Cells(Target.Row, "A") <> "" Then
  3.     Set col = Sheets("公司清單").Columns(2).Find(Cells(Target.Row, 2), , , , , 2)
  4.         AA = col.Offset(0, 1).Interior.Color
  5.     Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Interior.Color = _
  6.     col.Offset(0, 1).Interior.Color
  7. Else
  8.     Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Interior.Color = 16777215
  9. End If
  10. End Sub
複製代碼

TOP

回復  lpk187

改成下列的話,只要A欄和B欄其中一個無值的話回復空白
lpk187 發表於 2015-5-11 11:41


感謝 lpk187 大師再次幫忙

不好意思,我可能還是沒表達清楚,我做了圖片如下
我想要達成如下圖這樣子,不管我在哪一column編輯,只要column(B)的值是符合"公司清單"sheet的值,那row(A2:K10)都變色
再次感謝^^
天天空空啊~

TOP

        靜思自在 : 站在半路,比走到目標更辛苦。
返回列表 上一主題