• ベストアンサー

ユーザーフォームのテキストで区切り位置を指定するには

例えばエクセルのユーザーフォームで、テキストボックスを作成し、 そこにZ12X3456Y789のように入力してコマンドボタンのOKなどを押すと、セルA1に12 B1に3456 C1に789というように、それぞれの先頭のアルファベットを外して反映できるようにしたいのですがどうしたら良いでしょうか??

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

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.3

replaceを使ってみました。 Private Sub CommandButton1_Click() Dim re As Object Dim d() As String Set re = CreateObject("VBScript.RegExp") re.Pattern = "\D+(\d+)" re.Global = True d = Split(Trim(re.Replace(TextBox1.Text, "$1 ")), " ") If UBound(d) > -1 Then Range("A1").Resize(1, UBound(d) + 1) = d Set re = Nothing End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

Dim SC, PS, CL, EM Set SC = CreateObject("ScriptControl") SC.Language = "JavaScript" SC.ExecuteStatement "var a=""" & TextBox1.Text & _ """.replace(/[a-z]/ig,""\t"");" CL = SC.Eval("a") PS = 0 For Each EM In Split(CL, vbTab) PS = PS + 1 Cells(1, PS) = EM Next 少しインチキ臭いんですが、別法として・・・

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Private Sub CommandButton1_Click() Dim RegExp As Object Dim Match, Matches Dim i As Integer i = 1 Set RegExp = CreateObject("VBScript.RegExp") RegExp.Pattern = "\d+" RegExp.Global = True Set Matches = RegExp.Execute(TextBox1.Text) For Each Match In Matches Cells(1, i).Value = Match.Value i = i + 1 Next Set RegExp = Nothing Set Matches = Nothing End Sub ご参考になれば。

yasu7r
質問者

お礼

大変参考になりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAのユーザーフォーム・・

    教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。

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

    いろいろ手探りでVBAでユーザーフォームを作成し コマンドボックスによりテキストボックスを指定のセルへ転記し ユーザーフォームを終了させるという簡単ですがプログラミングをしました。 さらに、下記のことができたらと思ってるのですがどうしたら良いのかわかりません。 1.2種類のユーザーフォームを作成し、ファイルを開くと  選択肢ウィンドウが現れ選択したほうのユーザーフォームが開く 2.チェックボックスまたはラジオボタンで選択された項目を  指定のセルへ○を反映させたい。 以上のことを加えたいのですが、できますでしょうか。 つたない説明ですが御回答の程宜しくお願い致します。

  • セルの値をユーザーフォームのテキストボックスに

    エクセルの質問です。 シート1にボタンを設置してユーザーフォームを呼び出すようにしています。 ユーザーフォームにテキストボックスを用意してて、シート1のセル(A1)に記入された数字を、ボタンを押した時に立ち上がったユーザーフォームのテキストボックスに表示されるようにしたいのですが、どうしたらいいのでしょうか?

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

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

  • エクセル ユーザーフォーム

    エクセルのユーザーフォームでコマンドボタンを使ってテンキーを作りたいのですが、入力するときにテキストボックス1、テキストボックス2の切り替え方がわからなく困っています。 2つのテキストボックスに対応させるにはどのようにコードを書いたら良いでしょうか。 よろしくお願いします。

  • エクセルのユーザーフォームについて

    エクセルマクロのユーザーフォームのテキストボックスに セルの値を表示する方法で質問です。 ユーザーフォームを表示するとその時点での セルの値はテキストボックスに表示されているのですが ユーザーフォームを表示したまま 別のブックのセルを選んだ際に そのセルの内容がテキストボックスに表示されるようにしたいです。 ボタンや、なにかをするわけではなく 自分で任意のセルを選択したら、という事です。 ユーザーフォームには selectionchange などがないのでどうすれば良いかわかりません。 宜しくお願いします。

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

  • ユーザーフォーム入力後の値の貼付け方は?

    EXCELのVBEでユーザーフォームを作成しました。 テキストボックスに入力した値をEXCELシート上に 反映させるにはどのようにすればいいのでしょうか? EXCELシート上ではセルではなくてやはり テキストボックスに値が入るようにしなくてはできないのでしょうか? 初心者です。教えてください!

  • VBE、ユーザーフォームに関して質問があります。VBAを知って1カ月に

    VBE、ユーザーフォームに関して質問があります。VBAを知って1カ月に満たない初心者です。 ユーザーフォームでテキストボックスとコマンドボタンを1つずつ作りました。コマンドボタンを押すとテキストボックスに入れた文字・値がセルB1に入力されるようにしました。続けてテキストボックスに文字・値を入力し、コマンドボタンを押すとB2に入力されるようにしています。 ここからが質問なのですが、 コマンドボタンを押したときにA1に番号を順にふり、さらにセルを罫線で囲みたいのです。図で示すと、  A   B        A   B  _ ___      _ ___  |1|りんご| ⇒ |1|りんご|  - ---      - ---               |2|みかん|                - ---   このような感じです。また、外枠のみを太線にするということが可能であればその方法も教えて下さい。

  • ユーザーフォーム上のコンボボックスのリンク先はどうやって指定?

    エクセル97です。ユーザーフォームにおいたコンボボックスに表示させたいワークシート上のリスト、およびコンボボックスで選択された値をリンクさせたいセルの指定方法がわかりません。オプションボタンやチェックボックスのリンク先指定方法もわかりません。またユーザーフォームには「OK」「キャンセル」ボタンもないのでしょうか? エクセル95のときはダイアローグシートにコンボボックスを置き、コントロールの書式設定で簡単に指定が出来たのですが、97に変えてからは、敢えてエクセル5.0のダイアローグを挿入しないといけないようなので、出来ればユーザーフォームで作ってみたいのです。どうかよろしくお願いします。