是否有像Processing的map()这样的函数(我在其中取值并将'调整大小'到一个范围?)

时间:2015-03-10 14:51:22

标签: vba excel-vba excel

在Processing中,有一个“map()”函数,其工作方式如下:

float someValue = 25
float m = map(someValue, 0, 100, 0, 500);

将一个数字从一个范围重新映射到另一个范围。

在上面的示例中,数字25从0到100范围内的值转换为0到500之间的值。

这是一种“调整大小”数字的快捷方式,而不是进行数学运算。

在VBA中有这样的功能吗?

基本上,我正在尝试做类似(伪代码)的事情:

for i = 0 to 20
    Shapes.addline(10,10,20,i).Line.ForeColor.RGB = RGB(0,0,i)
Next

但我希望“i”从0到255缩放,因此(10,10)(20,2)处的行不具有RGB(0,0,2),但类似于(0,0,34) )或任何规模......

这有意义吗?感谢您的任何想法/帮助/建议!

2 个答案:

答案 0 :(得分:0)

在VBA中有一个名为Rnd的函数,它可以为您提供一个范围之间的随机数。所以你可以做点什么,

Dim rgbInd As Integer

For i = 0 To 20
    rgbInd = Int ((255 - i + 1) * Rnd + i)
    Shapes.addline(10, 10, 20, i).Line.ForeColor.RGB = RGB(0, 0, rgbInd)
Next

答案 1 :(得分:-1)

Dim c as integer, m as integer, n as integer
m = 255 'or any number that you want.
n = 20  'or num of variant color you specified
For i = 0 to m
    c = Int(i * n / m)
    Shapes.addline(10,10,20,i).Line.ForeColor.RGB = RGB(0,0,c)
Next