我在“A”列中有一个背景颜色列表,其ceil中的值是颜色的名称。
当我选择具有背景颜色的单元格时,我想这样做,这会将“C1”值的值更改为“A”列中的值。
(这不是我真正的颜色名称,每种颜色都有一个特定的名称。)
像vlookup但背景颜色和相同的ceil。
例如:
谢谢!
答案 0 :(得分:1)
将其放在工作表的代码部分:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
If dictColours.Exists(.Interior.ColorIndex) Then
Sheets("Sheet1").Range("C1").Value = dictColours(.Interior.ColorIndex)
End If
End With
End Sub
并将其添加到新模块,替换工作表参考:
Public dictColours As Scripting.Dictionary
Sub test()
Set dictColours = New Scripting.Dictionary
Dim rngTarget As Range
Set rngTarget = Sheets("Sheet1").Range("A1")
Do While rngTarget.Value <> ""
dictColours.Add rngTarget.Interior.ColorIndex, rngTarget.Value
Set rngTarget = rngTarget.Offset(1, 0)
Loop
End Sub
答案 1 :(得分:0)
答案 2 :(得分:0)
详细说明非常精细的解决方案表格我是否会建议将以下替代代码完全放入相关工作表的代码部分
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim dictColours As Scripting.Dictionary
Set dictColours = GetDictColours(Target.Parent)
With Target
If dictColours.Exists(.Interior.ColorIndex) Then
.Parent.Range("C1").Value = dictColours(.Interior.ColorIndex)
End If
End With
End Sub
Function GetDictColours(sht As Worksheet) As Scripting.Dictionary
Dim i As Long
Set GetDictColours = New Scripting.Dictionary
Do While sht.Range("A1").Offset(i) <> ""
GetDictColours.Add sht.Range("A1").Offset(i).Interior.ColorIndex, sht.Range("A1").Offset(i).Value
i = i + 1
Loop
End Function
除了一些风格选择(每个人都有他自己的最爱),OP应该更简单处理,他(正如他自己所说)是一个完整的VBA初学者!