gpt4 book ai didi

Excel VBA - 动态变体

转载 作者:行者123 更新时间:2023-12-04 21:27:41 26 4
gpt4 key购买 nike

不确定标题是否正确,因为我不是经验。
我有以下代码,我不明白为什么它不起作用。

Sub AddEvent2()

Dim p As String
Dim rgb1, rgbULP, rgbPULP, rgbSPULP, rgbXLSD, rgbALPINE, rgbJET, rgbSLOPS As Variant

p = Sheets("AdminSheet").Cells(4, 23).Value 'Product

rgbULP = rgb(177, 160, 199)
rgbPULP = rgb(255, 192, 0)
rgbSPULP = rgb(0, 112, 192)
rgbXLSD = rgb(196, 189, 151)
rgbALPINE = rgb(196, 215, 155)
rgbJET = rgb(255, 255, 255)
rgbSLOPS = rgb(255, 0, 0)
rgb1 = "rgb" & p
ActiveSheet.Range("A1").Value = rgb1

End Sub
我想这是基本知识,但我想知道 Range("A1") 中的变体(等 rgbULP = rgb(177, 160, 199)rgbPULP = rgb(255, 192, 0) )的值,但不确定它有什么问题。
有人可以解释一下吗?
问候,
乔治。

最佳答案

你最后的声明,ActiveSheet.Range("A1").Value = rgb1只会写rgb1的内容进入单元格 - 例如字符串 rgbALPINE .没有办法强制 VBA 编译器解释 rgb1 的内容作为变量名并查看该变量。
由于您有一个简单的列表产品名称 - 颜色,您可以使用 VBA collection - 集合基本上是对的列表。每对都有一个名称(即键)和一个值 - 值可以是任何东西(变体)。当您知道名称(键)时,您可以轻松获取值。您知道 VBA 中许多事物的集合,例如工作簿或工作表列表。
以下函数返回产品的 RGB 值。它使用 static集合的变量。 static意味着变量在例程结束后“存活”,因此集合必须只初始化一次。请注意,RGB 值在内部存储为 Long ,这就是函数返回 Long 的原因.

Function getColor(prod As String) As Long
Static colorList As Collection
If colorList Is Nothing Then
' Build the collection if it doesn't exist
Set colorList = New Collection
colorList.Add RGB(177, 160, 199), "ULP"
colorList.Add RGB(255, 192, 0), "PULP"
colorList.Add RGB(0, 112, 192), "SPULP"
colorList.Add RGB(196, 189, 151), "XLSD"
colorList.Add RGB(196, 215, 155), "ALPINE"
colorList.Add RGB(255, 255, 255), "JET"
colorList.Add RGB(255, 0, 0), "SLOPS"
End If
On Error Resume Next ' Prevent runtime error if prod is not part of list
getColor = colorList(prod)
On Error GoTo 0

End Function
您当前的 AddEvent2 -例程很短。但是,我想知道您是否真的要将颜色编号写入单元格。我假设您想使用颜色作为单元格颜色。
Sub AddEvent2()
Dim p As String, color as Long
p = Sheets("AdminSheet").Cells(4, 23).Value 'Product
color = getColor(p)
If color <> 0 Then
ActiveSheet.Range("A1").Value = color ' This writes the color number into the cell
ActiveSheet.Range("A1").Interior.Color = color ' This set the cell color
ActiveSheet.Shapes(1).Fill.ForeColor.RGB = color ' This sets the color of a Shape
End If
End Sub

关于Excel VBA - 动态变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66542748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com