Replace関数でNothing
あるString型の文字列配列、(仮にstrMojiretsu()とする)があって、strMojiretsu(20)の中にはCSVファイルから渡されたスペースが入っている。それを、
For i = 0 TO 30
If strMoji(i).Length > 0
strMoji(i) = Replace(strMoji(i).Trim(), """", "")
End If
Loop
という具合にスペースを空文字に変換してやろうとすると、
変換前にスペースから空文字にされたstrMoji(20).Trim()がNothingになってしまっていて、その後で落ちてた。
配列が参照型だからかと思ったが、私に指示する人が調べる時間を与えるような人であるはずもなく、
For i = 0 TO 30
If strMoji(i).Trim().Length > 0
strMoji(i) = Replace(strMoji(i).Trim(), """", "")
Else
strMoji(i) = strMoji(i).Trim()
End If
Loop
という修正を20箇所ぐらい書いた(正確には、書かされた)。
配列に入れる時点でチェックするのが本筋じゃないのかな。おまけに配列を受け渡しとかしてるし。修正の行数ができるだけ少なくなるようにへなちょこ修正コードを書かせる人なのに。
→""cとしてやれば問題ないとかいうことを聞いたので調べて□あとで書く。
VB以外の言語をきちんとやっていた人なら間違わないようなことかも。orz
そういえば、修正前のソースは.Trimメソッドに"()"が付いてなかったけど、2つになんか違いはあるのかな。同じなら、
strMoji(i).Trim.Length
より
strMoji(i).Trim().Length
の方が、メソッドやプロパティが連続したときに見やすくないかな。どうだろう。