- ベストアンサー
ユーザーフォームのテキストで区切り位置を指定するには
例えばエクセルのユーザーフォームで、テキストボックスを作成し、 そこにZ12X3456Y789のように入力してコマンドボタンのOKなどを押すと、セルA1に12 B1に3456 C1に789というように、それぞれの先頭のアルファベットを外して反映できるようにしたいのですがどうしたら良いでしょうか??
- みんなの回答 (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)
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)
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 ご参考になれば。
お礼
大変参考になりました。ありがとうございます。