Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2558 / 13646 ツリー ←次へ | 前へ→

【67255】スペースで区切られた文字列をを取り出すには ichi 10/11/17(水) 17:27 質問[未読]
【67256】Re:スペースで区切られた文字列をを取り出... kanabun 10/11/17(水) 18:06 発言[未読]
【67258】Re:スペースで区切られた文字列をを取り出... ichi 10/11/17(水) 18:22 お礼[未読]
【67259】Re:スペースで区切られた文字列をを取り出... kanabun 10/11/17(水) 18:25 質問[未読]
【67262】Re:スペースで区切られた文字列をを取り出... ichi 10/11/17(水) 21:03 お礼[未読]
【67260】Re:スペースで区切られた文字列をを取り出... kanabun 10/11/17(水) 18:54 発言[未読]

【67255】スペースで区切られた文字列をを取り出す...
質問  ichi  - 10/11/17(水) 17:27 -

引用なし
パスワード
   スペースで区切られた文字列からそれぞれの文字を取り出したいのですが
以下のように書いたのですがスペースが無視されているようで
うまくいきません 
  Moji1=ABC
  Moji2=DE
  Moji3=FGH
   としたいのですが

  Dim F_Cnt As Integer
  Dim F_NAME As String

  F_NAME = "ABC DE FGH"

  Do
    If InStr(1, F_NAME, " ") = 0 Then
      Exit Do
    Else
      F_NAME = Trim(Mid(F_NAME, (InStr(F_NAME, " ") + 1)))
    End If
  Loop

【67256】Re:スペースで区切られた文字列をを取り...
発言  kanabun  - 10/11/17(水) 18:06 -

引用なし
パスワード
   ▼ichi さん:
こんにちは〜

>スペースで区切られた文字列から

対象とする文字列が
>  F_NAME = "ABC DE FGH"
と全角スペースで区切られているのにたいして

>    If InStr(1, F_NAME, " ") = 0 Then

と、半角スペースを探してますから、
このままでは区切り位置が検索できません。
まず、ここを直されては?

【67258】Re:スペースで区切られた文字列をを取り...
お礼  ichi  - 10/11/17(水) 18:22 -

引用なし
パスワード
   kanabun さん有難うございました
試してみました
うまくいきそうです
また、何かでましたらよろしくお願いいたします

▼kanabun さん:
>▼ichi さん:
>こんにちは〜
>
>>スペースで区切られた文字列から
>
>対象とする文字列が
>>  F_NAME = "ABC DE FGH"
>と全角スペースで区切られているのにたいして
>
>>    If InStr(1, F_NAME, " ") = 0 Then
>
>と、半角スペースを探してますから、
>このままでは区切り位置が検索できません。
>まず、ここを直されては?

【67259】Re:スペースで区切られた文字列をを取り...
質問  kanabun  - 10/11/17(水) 18:25 -

引用なし
パスワード
   ▼ichi さん:

>試してみました
>うまくいきそうです
>また、何かでましたらよろしくお願いいたします

InStrで全角半角を問わずスペースを見つけるには
こんな風にします

ちなみに、
Sub Try1()
  Dim F_NAME As String
  Dim Moji() As String
  Dim Cnt As Long
  Dim j As Long
  
  F_NAME = "ABC DE FGH"
  Do
    j = InStr(1, F_NAME, " ", vbTextCompare)
    If j > 0 Then
      Cnt = Cnt + 1
      ReDim Preserve Moji(1 To Cnt + 1)
      Moji(Cnt) = Left$(F_NAME, j - 1)
      F_NAME = Mid$(F_NAME, j + 1)
    End If
  Loop While j
  Moji(Cnt + 1) = F_NAME
  MsgBox Join(Moji(), vbCr)
End Sub

【67260】Re:スペースで区切られた文字列をを取り...
発言  kanabun  - 10/11/17(水) 18:54 -

引用なし
パスワード
   ▼ichi さん:

あと、任意の区切り記号で文字列を分割するには
Split関数をつかうと 楽ちん です。

Sub Try2a()
  Dim F_NAME As String
  Dim Moji() As String
  
  F_NAME = "ABC DE FGH"
  Moji() = Split(F_NAME, " ") '全角スペースで区切る
  
  MsgBox Join(Moji, vbCr)
End Sub

Sub Try2b()
  Dim F_NAME As String
  Dim Moji() As String
  
  F_NAME = "ABC DE FGH"
  Moji() = Split(Replace(F_NAME, " ", " "))'半角変換して 区切る
  
  MsgBox Join(Moji, vbCr)

【67262】Re:スペースで区切られた文字列をを取り...
お礼  ichi  - 10/11/17(水) 21:03 -

引用なし
パスワード
   ▼kanabun さん:
実はDataが全角半角入り混じっていまして
悩んでいました すぐ取り入れる事ができました
助かりました
こんなことにもご配慮いただき感謝感激です
有難うございました


>InStrで全角半角を問わずスペースを見つけるには
>こんな風にします
>
>ちなみに、
>Sub Try1()
>  Dim F_NAME As String
>  Dim Moji() As String
>  Dim Cnt As Long
>  Dim j As Long
>  
>  F_NAME = "ABC DE FGH"
>  Do
>    j = InStr(1, F_NAME, " ", vbTextCompare)
>    If j > 0 Then
>      Cnt = Cnt + 1
>      ReDim Preserve Moji(1 To Cnt + 1)
>      Moji(Cnt) = Left$(F_NAME, j - 1)
>      F_NAME = Mid$(F_NAME, j + 1)
>    End If
>  Loop While j
>  Moji(Cnt + 1) = F_NAME
>  MsgBox Join(Moji(), vbCr)
>End Sub

2558 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free