2013-04-08 49 views
0

我需要寫一個宏的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()返回的值。

其實我不知道我使用的是正確的功能,因爲我只需要檢查,如果單元格的內容包括我的子或不...

結果的截圖:

回答

0

假設輸入字符串(假定它是作爲字符串傳遞的?)是「我的藍狗」。然後你的函數將循環運行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

相關問題