ループして文字列を順次取得するには?

解決


クーヘン  2006-06-19 20:42:24  No: 131926

お世話になってます。

現在、1行のテキストデータをループして、カンマ区切りを行う処理を考えています。
データは、AAAAABBCCCCCCCCCCDDDDDDDDEEEEEEEE・・・という感じです。

このデータを、1回目は先頭から5文字分。2回目は6文字目から2文字分、3回目は8文字目から10文字分、4回目は18文字目から8文字分を取得する、という感じで、12回、ループを回します。
何文字分取得するか、という数値はINIファイルから取得します。

分からない部分は、「何文字目から」という部分で、ループを回しながら「何文字目から」という値を取得したいのですが。

関数は、MID関数を使おうと思っています。

どうか、宜しくお願いします。


Blue  2006-06-19 20:59:38  No: 131927

切り出す文字数の情報はどのように保持していますか?配列?

>「何文字目から」という値
は前回の「何文字目から」という値 + 前回の 「文字数」 ということになります。
ただし、最初は1です。


クーヘン  2006-06-19 21:08:19  No: 131928

Blueさん
早速の返事、ありがとうございます。

切り出す文字数は、INIファイルで持っており、
A1 = 5
A2 = 2
A3 = 10
A4 = 8
という感じで持っています。


Blue  2006-06-19 21:45:00  No: 131929

> という感じで持っています。
ループでまわすには、これらを配列に入れないといけないでしょう。

ループを使わないと

Dim s     As String
Dim start As Long

s = "AAAAABBCCCCCCCCCCDDDDDDDDEEEEEEEE"

start = 1
MsgBox Mid$(s, start, A1)

start = start + A1
MsgBox Mid$(s, start, A2)

start = start + A2
MsgBox Mid$(s, start, A3)

start = start + A3
MsgBox Mid$(s, start, A4) 

となるのは理解できますでしょうか?


Blue  2006-06-19 21:48:17  No: 131930

> ループでまわすには、これらを配列に入れないといけないでしょう。
そうでもなかったでした。

ループの中で、INIファイルから読み込む処理を入れれば、
A1、A2、・・・
ということならばできますね。

ただ、INIファイル読込部分と文字列分割部分が同じ段階で処理されますけど。
(なるべく、大きな処理単位に分割したいです。)


クーヘン  2006-06-19 22:11:03  No: 131931

Blueさん。

返信ありがとうございます。

参考にさせていただき、色々いじって見た所、出来たようです。
ありがとうございました!


Blue  2006-06-19 22:12:52  No: 131932

> 色々いじって見た所、出来たようです。
できれば、どのようなコードを書いたのかを載せてください。
(フィードバックしてください。)


Blue  2006-06-19 22:12:53  No: 131933

> 色々いじって見た所、出来たようです。
できれば、どのようなコードを書いたのかを載せてください。
(フィードバックしてください。)


Blue  2006-06-19 22:13:40  No: 131934

2重投稿スイマセン。。。。orz


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加