• ベストアンサー

文字列をSplitを使って区切りたい。 ","

"," で区切られた文字列をSplitを使って区切りたいのですが。 例. "abc","123d","fr44","1erg" Dim Arr_Koumoku as string() Dim delimiter as string delimiter = Chr(34) & Chr(44) & Chr(34) 'delimiter = """,""" "← これでも結果は同じだった Arr_Koumoku = Arr_Kaigyo(i).Split(delimiter) とやると。 Arr_Koumoku(0) =   Arr_Koumoku(1) = abc Arr_Koumoku(2) = , Arr_Koumoku(3) = 123d Arr_Koumoku(4) = , Arr_Koumoku(5) = fr44 Arr_Koumoku(6) = , ・・・・ と区切られてしまいます。 Arr_Koumoku(0) ="abc" Arr_Koumoku(1) ="123d" Arr_Koumoku(2) ="fr44" Arr_Koumoku(4) ="1erg" としたいのですが。アドバイスを頂けたら幸いです。 開発環境 WindowsXP SP2 Visual Studio 2005 Standard Edition SP1

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

  • ベストアンサー
  • NYOI
  • ベストアンサー率58% (56/96)
回答No.2

そもそもString単体を引数にするSplitが存在しません。 Option Strict Offにしてるのかな…? 書き換えるなら Dim delimiter() As String = {"""", ",", """"} Arr_Koumoku = Arr_Kaigyo(i).Split(delimiter, StringSplitOptions.RemoveEmptyEntries) これで Arr_Koumoku(0) =abc Arr_Koumoku(1) =123d Arr_Koumoku(2) =fr44 Arr_Koumoku(4) =1erg となります。

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

その他の回答 (3)

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.4

あんま自信ないですが Arr_Koumoku = """abc"", ""123d"", ""fr44"", ""1erg""" MsgBox Split(Replace(Arr_Koumoku, """", ""), ", ")(0) ようは先に全ての『"』を取っ払って、『,』でSplitする感じです VB2005で通用するかわかりませんが、エクセルVBAでCSVファイルを処理するときは、良くやります 全ての『"』を取っ払ってもStringとして必要な『"』は残る(補完される?)ので、問題ありません 両サイドの『"』が必要なら、出力時に補完します MsgBox """" & Split(Replace(Arr_Koumoku, """", ""), ", ")(0) & """"

全文を見る
すると、全ての回答が全文表示されます。
  • NYOI
  • ベストアンサー率58% (56/96)
回答No.3

下の回答修正。 Dim delimiter() As String = {"""", ",", """"} ではなく Dim delimiter() As String = {"""", ","} でした。

全文を見る
すると、全ての回答が全文表示されます。
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

Visual Basicのことは詳しく知りませんが、 結果を見ると、 Arr_Kaigyo(i).Split(delimiter) のdelimiterは、最初の1文字のみが使用されています。 Split(delimiter) の引数delimiterが、複数の文字を含む文字列に対しても有効かどうか確認してください。 ダメな場合は、他の方法を探したほうが良いでしょう。

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

関連するQ&A

  • Excel97 VBA とVBSのsplit関数

    新しい職場で、Excel VBAでデータを取り込み、それを改行文字ごとにsplit関数で区切って配列に入れようとしました。 arr=split(文字列,vbcrlf) って感じでですね。しかし、なんとその職場のExcelのバージョンが97のため、VBAでsplit関数が使えず、この意図が実現できませんでした。そのため、ネットで調べてVBScriptのsplit関数を流用しようとしたのですが、「終了していない文字列型の定数です。」とエラーが出てしまいます。ソースは次のとおりなのですが、どう直せばいいでしょうか。改行文字で区切るのでなく、カンマなどで区切るのなら、上手く出来るのですが・・・。 Sub sample() Dim vs As Object Dim rtn As Variant Dim q As String Dim buf As String q = Chr$(34) 'ダブルクォーテーション Set vs = CreateObject("ScriptControl") vs.Language = "VBScript" 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 buf = "1" & vbCrLf & "2" & vbCrLf & "3" '改行で区切った文字。実際は、もっと複雑な文字を取り込みます。 rtn = vs.Eval("split(" & q & buf & q & ", vbCrLf)") 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 Debug.Print rtn(1) 'ここで「終了していない文字列型の定数です。」エラーが出る End Sub

  • ☆文字列を抜き取る★

    テキストファイルに GetPoint = ErrMsg("おはよう",target) の行があるとします。 ダブルクオートでくくられた文字列だけを出力させたい場合 下記コードでどこが間違っているでしょうか?? 今のままだと全てのコードが出力になるんですよ。。。 アドバイスをいただけると幸いです。 Sub Main() Dim iFileNumber As Integer iFileNumber = FileSystem.FreeFile() Open "C:temp\sample.txt" For Input As #iFileNumber Dim stResult As String Dim stSerch As String Dim point As Long Do While (Not FileSystem.EOF(iFileNumber)) Dim stBuffer As String Line Input #iFileNumber, stBuffer stResult = stResult & stBuffer & vbNewLine If Instr(stResult,Chr(34)) > 0 Then If Instr(stResult,Chr(34)) > 0 Then v = stResult End If End If Loop Close #iFileNumber End Sub

  • VBA 文字列の抜き出し

    VBAで文字列の抜き出しの方法を教えてください。 同様な質問があり、参考にしてみたのですがうまくいきません。 お分かりの方がいましたらご享受お願いいたします。 30~45字からなる文字列があります。 その中に特定の文字列が2つあり、そのうちの最初の特定文字列に続く文字2つ目の特定文字列前までを抜き出したいのですがうまくいきません。 具体的には abcdefghi GN=12jikl PE=fghj456 という文字列のなかから"GN="と"PE="の中間の文字を取り出したいのですが、 自分で書いたものでは"PE="以上が抜き出され、"GN="より前の文字列を抜き出せませんでした。 GN=......, PE=......の文字数はそれぞれ不規則です。また、GN=...よりも前の文字数も不規則です。 以下が作成したものです。 Dim i As Integer Dim Srch As String Dim Btwn As String Const Chr1 As String = "GN " Const Chr2 As String = "PE" Dim m As String Set sheetobj = ThisWorkbook.Worksheets("A") With sheeobj lastrow = sheetobj.Cells(sheetobj.Rows.Count, 10).End(xlUp).Row For i = 2 To lastrow Srch = sheetobj.Cells(i, 10) Btwn = Mid(Srch, InStr(Srch, Chr1) + 1, InStr(Srch, Chr2) - InStr(Srch, Chr1) - 1) sheetobj.Cells(i, 9) = Btwn Next i End With End Sub なにかいい方法があれば教えて頂けたらと思います。 よろしくお願い致します。

  • 文字列操作

    VB6です。 質問させてください。 ↓例、Buffer変数に取得データが入ります 最終的に下記の3つの値を取得したいです。 Value(1) = "ABC" Value(2) = "DEFGHIJKL" Value(3) = "MN" 少し長いと思います。スマートな方法はございますか? ----- Dim Buffer As String Dim Temp1 As String Dim Temp2 As String Dim Value() As String Buffer = "?ABC-?DEFGHIJKLMN-" '取得データ '前後?-を除きます。 Temp1 = Right(Temp1, Len(Buffer)-1) Temp1 = Left(Temp1, Len(Temp1)-1) 'この時点で、4文字目、5文字目の-?を除きます Temp1 = Left(Temp1, 3) Temp2 = Right(Temp1, 11) '"ABCDEFGHIJKLMN"を取得 Value = Temp1 & Temp2 '"ABC"を取得 Value(1) = Left(Value, 3) '"DEFGHIJKL"を取得 Value(2) = Right(Value(2), Len(Value)-3) Value(2) = Left(Value(2), Len(Value)-2) '"MN"を取得 Value(3) = Right(Value, 2)

  • 文字列を変数名として扱う方法

    vb6.0 か vb.net で文字列を変数名として扱うにはどうすればいいでしょうか? 例をあげると下記のようなことです。 -------------------- dim abc as string dim x as string abc = "テスト" x = "b" msgbox "a" & x & "c" -------------------- これをそのままvb6.0で実行すると"abc"という文字が表示されますが "abc"ではなく"テスト"と表示させたいのです。 つまり msgbox abc とした場合と同じようにしたいのですが可能でしょうか? ご存知の方教えてください。 よろしくお願いします。

  • SPLIT関数

    環境 VB6.0  CSVデータをカンマで区切ってデータを取得して  いるのですが、こういう処理はできるのでしょうか?  例えば データがダブルコーテーションでくるられて      いる場合はカンマ(,)を無視するといった      ことはできるのでしょうか? DIM CSVDATA AS STRING DIM XWDNDATA() AS STRING CSVDATA = "1,2,"あいう,おえお",25" XWDNData = Split(CSVDATA, ",") XWDNData(0) = "1" XWDNData(1) = "2" XWDNData(2) = ""あいう" XWDNData(3) = "おえお"" XWDNData(4) = "25" XWDNData(2)とXWDNData(3)を一つのデータとしたい こうしたいデータ XWDNData(0) = "1" XWDNData(1) = "2" XWDNData(2) = "あいうおえお" XWDNData(3) = "25"

  • CSVの一行目をコンボボックスに表示させたい

    毎回質問ばかりですみません。 CSVの一行目の","を起点にして分割をして そのあと分割したものをコンボボックスの一覧に入れたいのですが なかなかうまくできません。 Dim delimiter As String = "," dim txtf2 As New IO.StreamReader(ファイル保存場所,System.Text.Encoding.Default) IDset = txtf2.ReadLine Dim a As String() = IDset.Split(delimiter) とここまではできるのですが それをコンボボックスに追加する方法がわかりません。 IDsetが不特定な数を想定してるので for nextなどでとは考えているんですがうまくプログラミングができません。 指導いただけるとうれしいです。

  • 文字列の括弧について(初心者)

    textに自分で入力した値を変数文字列として扱う場合に、括弧を使いたいのですが、 例 Dim A as string Dim B as string A = Text1.text B = "abc" としてコマンドボタンを押したときにAとBの値が同じ場合(Aがabc)は1をAとBの値が違うときは0を出力するプログラムを作ったのですが、これに追加で括弧()や[]をつけても1を出力するプログラムが作りたいのですが、よくわかりません。 Text1.textの値が(abc)か[abc]でも1を出力、 [ab]cやa(b)cでも1を出力、(abcやa)bc(やa(b(cのときは0を出力するプログラムが作りたいのです。 どうか教えてください。 おねがいします。

  • VBAでSplitエラーです

    環境:Excel2002です   Cells(1, 1)に(1)~(10),(13),(20)~(28)のような値があります   Cells(1, 1)の値は別のプロシージャ求めていてその都度変わります   Cells(j, 4)をスタート位置にして   Cells(j, 4)に(1)~(10)   Cells(j+1, 4)に(13)   Cells(j+2, 4)に(20)~(28)を表示したいので   以下のプロシージャにしました Dim Str As String Str = ActiveSheet.Cells(1, 1).Value Dim i As Integer Dim j As Integer '◆カンマで区切った文字列をD列に格納 Dim tmp As Variant tmp = Split(Str, ",") j = 1 For i = 0 To UBound(tmp) ActiveSheet.Cells(j, 4) = tmp(i) j = j + 1 Next i   あるブックでは正常に動作するのですが   別のブックでは以下のエラーメッセージがでて動作しません   【モジュールではなく、変数またはプロシージャを指定してください】   何が原因なのでしょうか?ご教示願います   Splitを使わない別の方法があればそれでも結構です   とにかく困っています

  • 文字列の取り出し方

    今、Visual Basic 2008を使用しています。 textbox2とtextbox3があり、textbox2に複数行にまたがる文字列があります。 この文字列の中で、listbox1の中にある項目の文字列が入ってる場合はカンマ区切りで文字列の後ろにつなげたいのですが、うまくいきません。 具体的には あいうえお あかさたな いろはにほ というtextbox2の内容について、listbox1内に あ い という2つの項目があった場合、 あいうえお,あ,い あかさたな,あ いろはにほ,い という結果をtextbox3に書き出すという内容です。 Dim addtag As String = "" Dim i As Integer For Each part As String In TextBox2.Text.Split(vbCrLf) If part <> "" Then For i = ListBox1.Items.Count - 1 To 0 Step -1 If part.Contains(ListBox1.Items(i)) = True Then addtag = addtag & "," & ListBox1.Items(i) End If Next part = part & addtag TextBox3.Text = TextBox3.Text & part & ControlChars.NewLine part = "" addtag = "" End If Next というプログラムを組んでいますが、どこが間違っているのかわからず、煮詰まってしまいました。 プログラムは初心者で、根本から違っていたら恥ずかしい限りですが、どうかよろしくお願いします。