質問: Trim(userName) End If Debug.Print , todofuken ; Close ``` テキストファイルの2行目を取得して、 その行には必ず東京か大阪の文字があります 東京がある場合と大阪(そうでない場合)で処理を変えたいです。 (処理内容はほぼ同じなのですが...) これを実行すると プロシージャーの呼び出し、または引数が不正です というエラーになります。 if文の条件はいろいろ試したのですがうまくできません...。 何が悪いのでしょうか。 よろしくお願いします。
回答: InStr関数にはワイルドカードという概念はありません。 そのため`InStr(line2, "*東京*")`と書いた場合、`"*東京*"`の文字列を探す処理となります。 この部分も`InStr(line2, "東京")`で良いでしょう。 自分が書くとしたら以下のような感じですかね(もう少し効率化できますが)。 ``` '2行目を取得 Dim todofukenStart As Long todofukenStart = InStr(1, line2, "東京") If todofukenStart = 0 Then '「東京」が含まれていなかったら todofukenStart = InStr(1, line2, "大阪") End If If todofukenStart = 0 Then '「大阪」も含まれていなかったら '正しいファイルを選べばここに来ることは無いはず Err.Raise 5, Description:="line2「" & line2 & "」に「東京」も「大阪」も含まれていません" End If Dim userName As String Dim todofuken As String userName = Left(line2, todofukenStart - 1) todofuken = Trim(userName) ``` 気になったことをいくつか ``` If OpenFileName <> "False" Then Open OpenFileName For Input As #1 End If ``` 上記の箇所で処理を抜けなくて大丈夫ですか? > > プロシージャーの呼び出し、または引数が不正です > > というエラーになります。 > > > 具体的にどの行でエラーになるのかを書いた方が回答者がわかりやすいです。 (恐らくElse節の中の`userName = Left(line2, InStr(line2, "大阪") - 1)`だと思われますが) `todofuken = Trim(userName)`としていますが、ここに「都道府県」は入らないような気がします(実際の文字列がわからないのでなんとも言えませんが)。