0

我在为 LibreOffice Calc 3.6.2.2 编写宏时需要帮助

我要做的是将单元格编号传递给函数,然后该函数分析单元格的内容(文本字符串)并根据其内容返回一个值。

我当前的代码:

Function mColor2(mCellAdd)

    Dim l(5) as String 'declare list of variables

    l(0)="red"
    l(1)="blue"
    l(2)="yellow"
    l(3)="green"


    for i=LBound(l) To UBound(l) 'cycle from start to end of list 

        If InStr(mCellAdd,l(i))<>0 Then
            mColor2=l(i)
        Else
            mColor2="not known" 
        End If

    Next        


End Function

但我只得到“不知道”的回报。

我认为这是因为我没有正确处理从 InStr() 返回的值。

实际上我不确定我使用的是正确的功能,因为我只需要检查单元格的内容是否包含我的子字符串......

结果截图:

4

1 回答 1

0

假设输入字符串(假设它作为字符串传递?)是“我的蓝狗”。然后你的函数将循环运行 5 次(应该是 4 次?)。首先它寻找“红色”,但没有找到,因此 mColor2 设置为“未知”。然后它寻找“蓝色”,找到了,因此将 mColor2 设置为“蓝色”。然后它寻找“黄色”,并将 mColor2 设置回“未知”。“绿色”也一样,然后我不知道当我 4 岁时它会寻找什么。

在任何情况下,您都不想将 mColor2 重置为“未知”,只需摆脱您的 Else。

如果输入字符串包含多个您要查找的字符串,您是否已决定该怎么做?您是想在找到“红色”后立即退出,还是继续并记住最后找到的那个?

于 2013-04-08T09:10:28.177 回答