その2で公開したFindString関数の以下の部分は、もっとスマートに書けるということに気づいた。
Else 'ひと文字目が「"」以外の場合は、 '次の「"」の手前までの文字を返して終了 For i = 2 To Len(st) If Mid(st, i, 1) = """" Then FindString = Left(st, i - 1) Exit Function End If Next End If
新しいコードはこちら
Else FindString = Split(st, """")(0) Exit Function End If
Split関数をつかってダブルクォーテーションで分割し、その配列のインデックス0を参照すれば、目的の文字列が入っている。
ついでに、その3で公開したtest関数もreplaceの繰り返しが見苦しいので修正。
古いコード
result = Replace(result, "&", " & ") result = Replace(result, "+", " + ") result = Replace(result, "-", " - ") result = Replace(result, ")", " ) ") result = Replace(result, "(", " ( ") result = Replace(result, "*", " * ") result = Replace(result, "/", " / ") result = Replace(result, "=", " = ") result = Replace(result, ",", " , ") result = Replace(result, "'", " ' ") result = Replace(result, vbTab, " ")
新しいコード
For Each x In Split("& + - ) ( * / = , '", " ") result = Replace(result, x, " " & x & " ") Next x result = Replace(result, vbTab, " ")
Tabの置換は残ったが、それでもだいぶマシになった。