Word VBA質問箱 IV

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

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


11 / 306 ツリー ←次へ | 前へ→

【863】vba range.words コレクションのバグ? めめ 18/9/13(木) 12:28 質問[未読]

【864】Re:vba range.words コレクションのバグ? めめ 18/9/13(木) 13:46 発言[未読]
【865】Re:vba range.words コレクションのバグ? めめ 18/9/13(木) 14:39 発言[未読]

【864】Re:vba range.words コレクションのバグ?
発言  めめ  - 18/9/13(木) 13:46 -

引用なし
パスワード
   コレクションの先頭にだけ発生するようなので、wordのバグだった場合の対策

Sub test2()
  With Selection
    .Text = "マザー ファーザー チャイルド"
    Debug.Print "6:" & .Words(1) & ";" & .Words(2); ";" & .Words(3) & ";2番目以降の音引きはOK"
    If .Words(1) = "ー " Then
      Debug.Print "対策:" & Left(.Text, InStr(.Text, "ー"))
    End If
  End With
End Sub

結果
6:ー ;ファーザー ;チャイルド;2番目以降の音引きはOK
対策:マザー

Words(2)の末尾に半角ブランクがついていることに注意

【865】Re:vba range.words コレクションのバグ?
発言  めめ  - 18/9/13(木) 14:39 -

引用なし
パスワード
   連投スマソ
コレクションへのアクセス方法でも結果が変わる?

Sub test3()
  Selection.Text = "マザー シスター チャイルド ファーザー "
  Dim r As Range
  Dim i As Long
  i = 1
  Debug.Print "For Each"
  For Each r In Selection.Words
    Debug.Print " " & CStr(i) & ":" & r.Text & ";"
    i = i + 1
  Next
  Debug.Print "Words(i)"
  For i = 1 To Selection.Words.Count
    Debug.Print " " & CStr(i) & ":" & Selection.Words(i).Text & ";"
  Next
End Sub

結果
For Each
1:ー ;
2:ー ;
3:チャイルド;
4:チャイルド ;
5:ファーザー;
6:ー ;
Words(i)
1:ー ;
2:シスター ;
3:チャイルド;
4: ;
5:ファーザー;
6: ;

For Each は使わないほうがよさげ。Words(i) も半角ブランクが引っ付いたり、単語と見做されたり安定しない。

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