• ベストアンサー

VBAで区切り文字について

セルに「○○○/△△△/×××_◇◇◇」もしくは「○○○/△△△/×××_◇◇◇」という形式でデータが入力されています。 ユーザが対象セルを選択して、ワークシート上のボタンをクリックすると、各変数に下記のようにVBAで値を代入させたいのですが、 どのようにしたらよろしいのでしょうか。 basyo1 = ○○○ basyo2 = △△△ basyo3 = ◇◇◇ ご教授下さい。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim v, w Dim st1 As String, st2 As String st1 = "○○○/△△△/×××_◇◇◇" st2 = "○○○/△△△/×××_◇◇◇" v = Split(Replace(Replace(Replace(st1, "_", " "), "_", " "), "/", " ")) w = Split(Replace(Replace(Replace(st2, "_", " "), "_", " "), "/", " ")) MsgBox st1 & vbLf & v(0) & vbLf & v(1) & vbLf & v(3) MsgBox st2 & vbLf & w(0) & vbLf & w(1) & vbLf & w(3) End Sub basyo1 = v(0) basyo2 = v(1) basyo3 = v(2) とか?

その他の回答 (2)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

こんな感じでしょうか。 _と_を/に置換し、SPLIT関数で「/」を区切り文字として分割しています。例はfunctionにしましたので、選択したセルを引数として渡してやってください。 Function fSample(rng As Range) Dim basyo() As String Dim sdata As String sdata = Replace(Replace(rng.Text, "_", "/"), "_", "/") basyo() = Split(sdata, "/") basyo1 = basyo(0) basyo2 = basyo(1) basyo3 = basyo(3) End Function

回答No.2

セルA1に対象データが入力されており、 結果をセルB1,B2,B3に表示するものとして、マクロを書きます。 Dim A,B,C Dim AA,BB AA= Application.WorksheetFunction.Asc(A1) BB=Replace(AA,"/","") A=Len(AA)-Len(BB) For B=1 To A C=Instr(BB,"/") Cells(B,2)=Left(AA,C-1) AA=Right(AA,Len(AA)-C) Next B C=Instr(BB,"_") CeLLS(A+1,2)=Right(AA,Len(AA)-C)