的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到“不知道”,只是摆脱你的其他。
如果输入字符串包含多个您正在查找的字符串,您是否决定要做什么?你想一旦发现“红色”就退出,或者继续并记住最后一个发现的?
哦,我第一次发现忘记了退出循环!谢谢你的帮助。是的,如果我能找到所有其他颜色的字符,比如“绿色的狗在黄色的树上吠叫”,那应该是完美的。你有好主意吗 ? – AKarpun 2013-04-08 10:44:20
我也有一种感觉,InStr()函数不会返回我0,因为Else指令永远不会执行 – AKarpun 2013-04-08 11:03:29
您说只有“未知”返回,这意味着它进入Else,所以'InStr'是返回给你0.关于多种颜色,你必须决定你的函数是否应该返回“绿色”,“黄色”或“绿色黄色”或其他东西。但是,你需要继续循环。 – Penfold 2013-04-08 14:55:39