• ベストアンサー

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

例えばエクセルのユーザーフォームで、テキストボックスを作成し、 そこに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

専門家に質問してみよう