VBA フォーム上textbox指定範囲の抜き出し

このQ&Aのポイント
  • VBAフォーム上のテキストボックスの指定範囲を部分ごとにセルに書き出す方法について解説します。
  • テキストボックスの内容を置換せずにセルに書き出し、ずらしていく方法を考えます。
  • 元データを消さずに部分ごとに取得し、セルに書き出す方法を探しています。
回答を見る
  • ベストアンサー

VBA フォーム上textbox指定範囲の抜き出し

いつも大変お世話になっております。 フォーム上のテキストボックスにデータが記入されています。 -------------------------- ああああああああああああああああああ あああああああああああああああ あああああああああああああああああ -------------------------- いいいいいいいいいいい いいい いいいいいいいいいいい -------------------------- ううううううううううううう ううううううううううううううううううう ううううううううううううう -------------------------- 「--------------------------」でくくってある部分ごとに、 セルに書き出したいと思っています。 例えば、A1に ああああああああああああああああああ あああああああああああああああ あああああああああああああああああ A2に いいいいいいいいいいい いいい いいいいいいいいいいい A3に ううううううううううううう ううううううううううううううううううう ううううううううううううう としたいです。 これを実現する方法はあるのでしょうか? 置換すると、元データは消えてしまいますし、 テキストボックスの内容をセルに書き出して、 それをずらしていく?みたいな考えなのですかね? 部分で取得し、セルに書き出すということはできないのでしょうか。 回答いただけるとうれしいです。 よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>「--------------------------」でくくってある部分ごとに、セルに書き出したい private sub CommandButton1_Click()  dim a  a = split(textbox1, "--------------------------")  range("A1").resize(ubound(a),1) = application.transpose(a)  range("A1").delete shift:=xlshiftup end sub ぐらいで。

satoron666
質問者

お礼

keithin様、回答ありがとうございます。 split !!!! このような方法があったのですね… 目からうろこです! ありがとうございました! とても参考になります^^

satoron666
質問者

補足

実行時エラー '2147417848(80010108)'  オートメーションエラーです。  起動されたオブジェクトはクライアントから切断されました。 エラーになり、上手く操作できません。 困りました・・・

関連するQ&A

  • Excel VBAのTextboxについて

    こんにちは。 Excelのユーザーフォームのテキストボックスに、  あああ  いいい と改行されたデータを入力した後、 セルA1に「あああ」 セルA2に「いいい」とできないでしょうか。 Windows2000、Office2003です。 あまり詳しくないので説明不足な点もあると思いますが、よろしくお願いいたします。

  • エクセル VBA フォーム設定について

    いつもお世話になっています。 エクセル VBAでユーザーフォームについて教えてください。 あるシートのデータをフォームに読み込み、違うシートにそのデータを書き込んでいます。元データの列順と書き込むシートの列順が違うので、VBAで設定して使っています。 書き込みはうまくいっています。ただ、書き込む際にフォーム上で少しデータを修正して書き込みを行うのですが、編集したいフォーム上のテキストボックスをクリックすると、データの最後のほうにカーソルが飛んでしまいます。 テキストボックスをできるだけ大きくして対応していますが、限度があります。テキストボックスをクリックした際にデータの最後(文字データで言うと文章の最後を表示してしまう)まで動かずに、クリックしても先頭のままになるようにするにはどうすればいいのでしょうか。 同じように、コンボボックスもクリックするとリストの最後から表示されます。リストの先頭から表示させる方法を教えてください。

  • excel vba ユーザーフォーム

    現在、セルa101からa110までに「商品名」、セルb101からb110までに「金額」が 入力済みです。 このデータを、ユーザーフォーム上にコンボボックスを2つ作成し、セルa1へ 商品名を選択後、入力。また、b2へ金額を選択後、入力させたいのです。 また、ユーザーフォーム上にテキストボックスを作成し、ここに入力した 「備考」の全角10文字をc1へ移動したいです。 今のところ、ユーザーフォーム、コンボボックス、テキストボックスを作成した だけで 立ち往生しています。 どなたか、ご教授お願いいたします。

  • C# TextBoxをもつフォームが非アクティブ

    お世話になります。 C#にて、付箋紙の様な簡易メモ帳を作ろうとしています。 フォーム上にテキストボックスを配置し、テキストを入力後、 そのフォームが非アクティブになった時、つまり、デスクトップや 他のウインドウに切り替わった瞬間に(フレームの色が変わった時) 自動保存させたいと思うのですが、なかなかうまくいきません。 方法をお教えください。 尚、現在はLeaveイベントで取得しようとしてみましたが、 フォーム内では発生しますが、違うウインドウに切り替えただけだと 発生しません。 以上、よろしくお願いいたします。

  • VBA フォーム作成

    ユーザーフォームを作成しテキストボックス、コマンドボタンを配置して、コマンドボタンに処理の内容を記述して実行することは出来たのですが、テキストボックスに文章を書く際に任意の位置で改行して実行すると改行した部分でセルA1とセルA2に分かれて入力されてしまいます。User Form1のプロパティMultiLineをTrueにしています。 アドバイス頂けますか。

  • ユーザーフォームについて

    エクセル2002です。 ユーザーフォーム内のテキストボックスを使用して、 (1)A1のセルに1と入力されている状態でマクロを起動した場合、 (2)ユーザーフォーム内のテキストボックスには2と表示される (3)ユーザーフォーム内のボタンを押すと、A2のセルに2と入力される。 このような流れで、A列のデータ最終行に番号をふっていきたいです。 (A列のデータ最終行がA30なら、A31に31と番号をふる) ユーザーフォームのテキストボックスとボタンは作ってあるのですが、 それぞれに入れるコードを教えていただけないでしょうか。 よろしくお願いします。

  • TextBoxのhWndプロパティVBAでも使えませんか?

    環境 OS:Win2000ProSP4 Excel2000および2002 Excel2000で、テキストボックスのあるフォームを作成しました。 選択したファイルを読み込んでテキストボックスに表示する機能があり それに加えて、テキストボックス中をマウスでクリックした時、その場 所のカーソルの位置(そこの行数と行内で何カラム目か、の2つ)を取得し て同じフォーム上に表示させる機能をつけました(矢印ボタンでカーソ ルが移動しても、位置情報を更新するようにしています)。ただし、 ネットで調べたカーソル位置取得方法はVBAでなくてVBのものなので、 API(SendMessage)に渡すテキストボックスのhWndプロパティはなく、 困ってしまいました。窮余の一策として、普通のテキストボックスの 代わりに、リッチテキストコントロールを使用して、その中にある hWndプロパティを渡して、上の機能を実現していました。ところが、 Excelを2002にアップグレードしたら、リッチテキストコントロール が使えないことが判明しました(MSのサイトによると、セキュリティの ため、とのこと)。 Excel2002で、2000時代につくったフォームを開くと、リッチテキスト コントロールがすっぽり抜け落ちている状態です。こうなれば、普通の テキストボックスのhWndプロパティをAPIで取得できないか、というこ とを調べているところで困っています。あるいは、2002でも使える同じ ようなコントロールがあれば助かります。 長くなりましたが、ご存知の方、アドバイスをお願いします。

  • VBA フォーム上のテキストボックス文章 置換

    いつもお世話になっております。 前回も同じような質問をさせて頂きましたが、 自分でも説明下手だと思ったため 的を絞り、もう一度質問させて頂きました。 今回やりたいことは、フォーム上のテキストボックスを置換したいのです。 ワイルドカードを使って置換したいと思っています。 例) 転送者AAAAAAAAAAAAAAAAAAAAA 件名 ああああああああああ 本文 ああああああああああ     ああああああああああ     ああああああああああ 本文おわり いいいいいいいいいいいいい内容 うううううううううううううううううううう ううううううううううううううううう対策えええええ えええええええええええええええ えええええ添付おおおおおおおおおおお おおおおおおおおお転送者AAAAAA AAAAAAAAAAAAAAAAAAAAA 件名 ああああああああああ 本文 ああああああああああ     ああああああああああ     ああああああああああ 本文おわり いいいいいいいいいいいいい内容 うううううううううううううううううううう ううううううううううううううううう対策えええええ えええええええええええええええ えええええ添付おおおおおおおおおおお おおおおおおおお ↓ <件名> ああああああああああ <本文> ああああああああああ ああああああああああ ああああああああああ <内容> うううううううううううううううううううう ううううううううううううううううう <対策> ええええええええええ えええええええええええええええ <添付> おおおおおおおおおおお おおおおおおおおお <件名> ああああああああああ <本文> ああああああああああ ああああああああああ ああああああああああ <内容> うううううううううううううううううううう ううううううううううううううううう <対策> ええええええええええ えええええええええええええええ <添付> おおおおおおおおおおお おおおおおおおおお 上記のように置換使用と思っています。 もともとWordで行っていたのですが、 できれば、<内容>と<対策>の順番を変えたいと思い Excelにすることにしました。 件枠ワードが行をまたぐことが多いため、 フォーム上にテキストボックスを設置し、 データを貼り付け(例題みたいなもの) そして、置換して上記のような形にしたいと思っています。 (セルだと上手くできませんでした) 置換方法は、Wordと同じようにすれば良いかと思ったのですが、 VBAだとワイルドカードの使い方が良く分かりません。 VBAで、ワイルドカード置換する方法 または、セル参照で上手く置換できる方法など ありましたら、教えてください。よろしくお願い致します。

  • 【Excel VBA】ユーザーフォームについて

    Excel2003を使用しています。 Sheet1のある範囲のデータをSheet2に(アクティブセルに)コピーするというマクロを作成しました。 データをコピーする際、範囲中のいくつかのセル(2~3箇所ですが)のデータを書き換えて、コピーするときもあるため、変更箇所がある場合は入力モード等の関係もあるので、ユーザーフォームを使って、書き換えるようにしました。 コピー元の範囲を変えただけの同じようなマクロが複数あるのですが、テキストボックスやコンボボックスに入力されたデータをシートへ転記する際のセルの位置が変わるだけなので、ひとつのユーザーフォームを使いまわしというと変ですが、そのようなことはできないのかなと思い、質問させていただきました。 -------------------------------------------------------------- Private Sub CommandButton1_Click()   Range("F371").Value = TextBox1.Text   Range("N371").Value = ComboBox1.Text   Unload Me End Sub 上記コードは、ユーザーフォームのコードの一部ですが、 Range("F371").Value = TextBox.1Text      ↓ Range("F397").Value = TextBox.1Text のように、転記先のセルだけ変わればいいので、そのために、同じユーザーフォームをいくつも作るのも…と思った次第です。使いまわしのようなことはできなければ、コピーして作成しようと思っています。 うまく文章に表すことができなくて申し訳ないのですが、よろしくお願いします。

  • ユーザーフォームのTextBoxの操作について

    皆様、こんにちは。 いつもお世話になっております。 ユーザーフォームのテキストボックスに何も入力されていないと自動的に0が表示されるようにしたいですが、エラーが出てしまいます。 具体的に、 1テキストボックス 2テキストボックス ・・・ 合計テキストボックス があって、詳細が分からなくて合計のテキストボックスにのみ入力する時に、合計テキストボックスをクリックしたときにその他のボックスに0が表示されるように書きたいです。 Private Sub TextBox9_Enter() Dim i As Integer For i = 1 To 8 If TextBox(i).Text = "" Then TextBox(i).Text = "0" End If Next i End Sub のように考えましたが、間違っていますね。 教えていただければ幸いです。 どうぞよろしくお願いいたします。

専門家に質問してみよう