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 を「不明」に戻します。「緑」についても同じですが、i が 4 のときに何を探すのかわかりません。

いずれにせよ、mColor2 を「不明」にリセットしたくない場合は、Else を削除してください。

入力文字列に探している文字列が複数含まれている場合の対処法は決まっていますか? 「赤」を見つけたらすぐに終了しますか、それとも最後に見つかったものを覚えて続行しますか?

于 2013-04-08T09:10:28.177 に答える