【问题标题】:LibreOffice Calc macro text searchLibreOffice Calc 宏文本搜索
【发布时间】:2014-12-30 16:40:55
【问题描述】:

我在为 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() 返回的值。

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

结果截图:

【问题讨论】:

    标签: string search macros calc


    【解决方案1】:

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

    无论如何,您都不想将 mColor2 重置为“未知”,只需摆脱您的 Else。

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

    【讨论】:

    • 哦,发现第一次出现时我忘记退出循环了!谢谢你的帮助。是的,如果我能在字符串中找到所有其他颜色,比如“绿狗在黄树上吠叫”,那应该是完美的。你有什么想法吗?
    • 我也有一种感觉,InStr()函数不会给我返回0,因为Else指令永远不会执行
    • 你说你只得到“未知”返回,这意味着它正在进入 Else,所以InStr 返回你 0。关于多种颜色,你必须决定你的函数是否应该返回“绿色”,或“黄色”,或“绿色黄色”或其他东西。但是你需要继续循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多