的LibreOffice Calc中宏文本搜索

问题描述:

我需要写一个宏的LibreOffice Calc的帮助3.6.2.2的LibreOffice Calc中宏文本搜索

我试图做的是通过一个细胞数函数,该函数然后分析单元格的内容(文本字符串)并根据其内容返回一个值。

我当前的代码:

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

其实我不知道我使用的是正确的功能,因为我只需要检查,如果单元格的内容包括我的子或不...

结果的截图:

假设输入字符串(假定它是作为字符串传递的?)是“我的蓝狗”。然后你的函数将循环运行5次(应该是4?)。首先它会查找“red”,但找不到,所以mColor2设置为“未知”。然后它会查找找到的“蓝色”,所以mColor2设置为“蓝色”。然后它查找“黄色”,mColor2设置回“未知”。同样的“绿色”,然后我不知道什么时候我会是4。

在任何情况下,你不想重置mColor2到“不知道”,只是摆脱你的其他。

如果输入字符串包含多个您正在查找的字符串,您是否决定要做什么?你想一旦发现“红色”就退出,或者继续并记住最后一个发现的?

+0

哦,我第一次发现忘记了退出循环!谢谢你的帮助。是的,如果我能找到所有其他颜色的字符,比如“绿色的狗在黄色的树上吠叫”,那应该是完美的。你有好主意吗 ? – AKarpun 2013-04-08 10:44:20

+0

我也有一种感觉,InStr()函数不会返回我0,因为Else指令永远不会执行 – AKarpun 2013-04-08 11:03:29

+0

您说只有“未知”返回,这意味着它进入Else,所以'InStr'是返回给你0.关于多种颜色,你必须决定你的函数是否应该返回“绿色”,“黄色”或“绿色黄色”或其他东西。但是,你需要继续循环。 – Penfold 2013-04-08 14:55:39