Word VBA質問箱 IV

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

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


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

【578】選択した文字列から1文字ずつ削除するには k.ぬま 08/6/25(水) 11:02 質問[未読]
【579】Re:選択した文字列から1文字ずつ削除するには k.ぬま 08/6/25(水) 21:14 質問[未読]
【761】Re:選択した文字列から1文字ずつ削除するには マナ 13/5/19(日) 9:20 発言[未読]

【578】選択した文字列から1文字ずつ削除するには
質問  k.ぬま  - 08/6/25(水) 11:02 -

引用なし
パスワード
   選択した文字列から1文字ずつ削除するにはどうしたらよいでしょうか。
選択した文字列は、和文字が4〜7字くらいで、続けて(空白なし)英数字が5,6字です。
一番後ろの文字が英数字であるがどうかを判断して、英数字であるときは、1文字削る、ということを英数字がなくなるまで繰り返したい、のですが、
で、のこった和文字は、他の処理で使いたいのですけど、

【579】Re:選択した文字列から1文字ずつ削除する...
質問  k.ぬま E-MAIL  - 08/6/25(水) 21:14 -

引用なし
パスワード
    ▼k.ぬま:
自分で以下のところまでコードを作りました。
\を入れなければ順調に動きます。ただし、何の変化もありませんが。
\を入れられない規則が分かりません。
正しいコードにしたいのですけど、分かる方、どうぞご指導をお願いします。
上半分は、文字列の右側部分の英数字を取り除き、
下半分は、文字列の左側部分の和字を取り除くことを考えています。\wや\はだめと言うことみたいです。

  str1 = ""
  str = Selection.Text
  n = InStr(str, \w) ’←コンパイルエラーで赤くなります、\が原因
  Do Until n = 0
    str1 = str1 & Left(str, n - 1)
    str = Mid(str, n + 1)
    n = InStr(str, \w)’←コンパイルエラーで赤くなります、\が原因
  Loop
MsgBox "Yougoの取出し"
'〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
  str2 = ""
  str = Selection.Text
  n = InStr(str1, ¥D) ’←コンパイルエラーで赤くなります、\が原因    Do Until n = 0
    str2 = str2 & Right(str, n - 1)
    str = Mid(str, n + 1)
    n = InStr(str, ¥D) ’←コンパイルエラーで赤くなります、\が原因
  Loop
MsgBox "Fugouの取出し"

【761】Re:選択した文字列から1文字ずつ削除する...
発言  マナ  - 13/5/19(日) 9:20 -

引用なし
パスワード
   今更ですが、自分の勉強のために書いてみました。

InStrだとワイルドカードが使えないので、Likeを使用しました。

Sub test()
  Dim myStr As String
  Dim s As String
  Dim i As Long
  Dim Yougo As String

  myStr = Selection.Text
  For i = 1 To Len(myStr)
    s = Mid(myStr, i, 1)
    If s Like "[A-z0-9]" Then
      Yougo = Mid(myStr, 1, i - 1)
      Exit For
    End If
  Next
  If Len(Yougo) > 0 Then
    MsgBox "「" & Yougo & "」が取り出されました"
  Else
    MsgBox "取り出しに失敗しました"
  End If
  
End Sub

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