Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2789 / 13646 ツリー ←次へ | 前へ→

【65991】テキストボックスについて かな 10/7/13(火) 13:51 質問[未読]
【65994】Re:テキストボックスについて neptune 10/7/13(火) 15:42 回答[未読]
【65995】Re:テキストボックスについて neptune 10/7/13(火) 15:43 回答[未読]
【65997】Re:テキストボックスについて かな 10/7/13(火) 16:20 お礼[未読]
【65999】Re:テキストボックスについて mura 10/7/13(火) 16:35 お礼[未読]

【65991】テキストボックスについて
質問  かな  - 10/7/13(火) 13:51 -

引用なし
パスワード
   テキストボックスに長文を入力して、それを、改行毎にセルに分割して入れていく…といったマクロを作成したいのですが、今のままだと、スマートではないので、直接テキストボックス内の文章をセルに分割して入力する方法があれば、教えていただきたいです

TextBox1
この文章はテストです
今日は晴れ
明日は曇り
明後日は雨
いまは梅雨

↑上記のような文章をテキストボックスに入力すると、下記のようにエクセルのセル内に表記させたいです

セルA1 この文章はテストです
セルA2 今日は晴れ
セルA3 明日は曇り
セルA4 明後日は雨
セルA5 いまは梅雨

といったように、5行に分けて表示させるにはどうしたら、よいのでしょうか?

今のマクロは
1.テキストボックス内の値をセルA1に入れる
 【コード】
  Range("A1").Value = TextBox1.Value

2.セルA1の値を改行毎にセル分割させる
 【コード】
Dim MyTar As String
Dim strTest As String

i = 1
’セルA1に値がなくなるまで繰り返す
Do While Cells(1, 1).Value <> ""
  strTest = Cells(1, 1).Value
  ’改行で区切って、セルに値を入れる ⇒(同時にセル内の改行も削除)
  Cells(i, 2).Value = Replace(Left(strTest, (InStr(1, strTest, vbLf))), Chr(10), "")
  ’元データとなるセル内の文字列で入力した行を削除する
  Cells(1, 1).Value = Right(strTest, Len(strTest) - (InStr(1, strTest, vbLf)))

i = i + 1

Loop

どうか、アドバイスをお願いします

【65994】Re:テキストボックスについて
回答  neptune  - 10/7/13(火) 15:42 -

引用なし
パスワード
   ▼かな さん:
>TextBox1
>この文章はテストです
>今日は晴れ
>明日は曇り
>明後日は雨
>いまは梅雨
>
>↑上記のような文章をテキストボックスに入力すると、下記のようにエクセルのセル内に表記させたいです
>
>セルA1 この文章はテストです
>セルA2 今日は晴れ
>セルA3 明日は曇り
>セルA4 明後日は雨
>セルA5 いまは梅雨
>
>といったように、5行に分けて表示させるにはどうしたら、よいのでしょうか?
恐らく一番よく用いられる方法は
1.textboxのtextプロパティ取得
2.split関数にて改行記号ごとに分割→1次元配列が出来る
3.1次元配列の要素数だけセルへの転記を繰り返す

【65995】Re:テキストボックスについて
回答  neptune  - 10/7/13(火) 15:43 -

引用なし
パスワード
   ▼neptune さん:
>▼かな さん:
書き忘れ、textboxの改行記号は vbcrlf

【65997】Re:テキストボックスについて
お礼  かな  - 10/7/13(火) 16:20 -

引用なし
パスワード
   ▼neptune さん:

なるほど、、、Splitを使って、配列を使用するんですね
ありがとうございました

お蔭様で、解決しました

【65999】Re:テキストボックスについて
お礼  mura  - 10/7/13(火) 16:35 -

引用なし
パスワード
   >お蔭様で、解決しました

解決したコードを示してもらいたいですね。

>3.1次元配列の要素数だけセルへの転記を繰り返す

この部分はどうしましたか?
一気に配列をセルへ書き戻す事も出来ます。

2789 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free