質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

Q&A

解決済

1回答

479閲覧

word vbaで選択範囲の文字のならびを1文字ずつ確認

hiyoko0410

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

0グッド

0クリップ

投稿2022/09/22 12:58

word vbaで文字のならびを1文字ずつ確認し、該当する並びだった場合
文字の書式設定を行いたいです。

実現したいこと
例:)文章を選択し、「あA」(文字→英字)の並びがあったら
ひらがなを標準字、英字の書式を0.5広くする

考えたマクロは下記の通りです。

Do While Selection.Start < Selection.End

myS = Selection.Range.Start myM = Selection.Range.Start + 1 '文字、アルファベット一文字の並びで斜め文字の文字間隔(同じ列内に限る) If myS Like "[あ-ん]" And myE Like "[a-zA-Z]" Then

' myE.Selection
If myM.Font.Italic = True Then
Selection.Font.Spacing = 0.5
End If
End If
Loop

myS が文字ではなく数字が入り、うまく条件にあてはまりません。
どのようにすれば設定できるでしょうか。

ご教示ください。

追加で質問です
paragraphs.count で段落を数えようとしましたが、
オブジェクトが必要ですと表示されました。

いろいろ検索しましたが、答えが見当たりませんでした。

ご教示お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ワイルドカードを使って検索すればいいでしょう。

vba

1 Selection.Find.ClearFormatting 2 With Selection.Find 3 .Text = "[ぁ-ん][a-zA-Z]" 4 .Wrap = wdFindContinue 5 .MatchWildcards = True 6 Do While .Execute 7 If Selection.Characters(2).Font.Italic = True Then 8 Selection.Font.Spacing = 1 9 End If 10 Loop 11 End With 12 ActiveDocument.Range(0, 0).Select

投稿2022/09/22 15:37

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiyoko0410

2022/09/23 12:15

ご回答ありがとうございます。 早速入力してみたところ、 エラーコード 6182 matchphrase,machuwildcards,matchsoundslike,matchallwordforms,matchfuzzy パラメーターは同時にtrueに設定することができませんとでました。 ほか方法ご存知でしょうか。 ご丁寧に回答いただいたところ申し訳ありませんが 最後ご教示いただけますと幸いです。
hatena19

2022/09/23 12:27

当方のサンプルではエラーなく動作するのを確認済みです。 実際のコードを Sub から End Sub までコピーして貼り付けてもらえますか。 また、どの行でそのエラーがでるか教えてください。
hiyoko0410

2022/09/23 12:45

教えていただいたマクロに sub テスト() Selection.Find.ClearFormatting With Selection.Find .Text = "[ぁ-ん][a-zA-Z]" .Wrap = wdFindContinue .MatchWildcards = True Do While .Execute If Selection.Characters(2).Font.Italic = True Then Selection.Font.Spacing = 1 End If Loop End With ActiveDocument.Range(0, 0).Select endsub で試したところ、 .MatchWildcards = True で先ほどのエラーがでました。 WindowsのバージョンはWindows 10 Homeです。
hatena19

2022/09/23 13:54

検索してみたら下記が参考になりそうです。 https://stabucky.com/wp/archives/3458 下記でどうでしょう。 Sub テスト() Selection.Find.ClearFormatting With Selection.Find .Text = "[ぁ-ん][a-zA-Z]" .Wrap = wdFindContinue .Replacement.Text = "" .MatchPhrase = False .MatchSoundsLike = False .MatchAllWordForms = False .MatchFuzzy = False .MatchWildcards = True Do While .Execute If Selection.Characters(2).Font.Italic = True Then Selection.Font.Spacing = 0 End If Loop End With ActiveDocument.Range(0, 0).Select End Sub
hiyoko0410

2022/09/24 00:57

希望通りの処理が出来ました。 ご丁寧にありがとうございます。 感動しています!!! また質問したときはどうぞよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問