質問: SplitString(i) 'selectDataの行をとりたい Next i End If Loop Close #FileNo ``` ### 前提・実現したいこと ここに質問の内容を詳しく書いてください。 (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能を実装中に以下のエラーメッセージが発生しました。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード ``` ソースコード ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 質問タイトルはCSVや配列について書かれていますが、質問の実態は * Matchでシート内のデータを検索して該当セルを探したいが、エラーが出る。 * 検索対象を配列から持ってきているが、そのやり方がまずいのか、Matchの使い方がまずいのかが判らない。 ということでしょうか?だとすると、まずは最低限、やりたいこと「だけ」を切り出して、そもそもその書き方や使い方に間違いが無いか、問題が無いかを調べるのが基本です。問題の切り分けといいます。この場合「CSVや配列の扱い以前に、まず、Matchの使い方あってる?」というところを確認。そこに問題が無ければ、残るは配列やCSVの使い方なので、そちらを調べます。 まず、付記されたソースから肝心な部分だけを抜き出すとこんな感じかと思います。問題を簡単にするため、配列やらなにやらは取り払い、単純に「文字列"002」を「A9から最終行まで」から探すとういう記述にしました。 ``` selsheet = Worksheets(Sheets.Count).Activate selectdata = Application.WorksheetFunction.Match("002", Range("A9:A1048575"), 0) ``` こうすると * その範囲に対象文字がある場合 ...... selectdataに指定範囲のうち、該当する行番号が入る。 * その範囲に対象文字が無い場合 ...... エラー「1004: アプリケーション定義またはオブジェクト定義のエラーです」が出る。 ということが判ります。もしかしたらですが、この後者のエラーが出たりしていませんか? まずはあなた自身が「Matchの使い方には問題無い」ことを確認しましょう。 で、次。質問文には「SpritString(0)に"002"」と書かれていますが、プログラム内でMatchに渡すデータは「SpritString(3)」を使っています。これは問題ありませんか?そもそも、SpritString(3)が無かったり、ほしいデータと違うデータを配列から取り出して検索していませんか? こうやって順番に問題点のありそうなところをしらべ、問題が無いところを課題からそぎ落とし、本当の問題がどこにあるか絞って行ってみてください。 直接の回答ではありませんが、考え方、調べ方の参考になれば。