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

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

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

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

Q&A

解決済

3回答

1125閲覧

VBA:英字以外に処理をしたい

aaaskw123123

総合スコア13

VBA

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

0グッド

0クリップ

投稿2021/09/10 05:56

前提・実現したいこと

VBAについて質問です。
以下のプログラムは
「B列にもし半角スペース,全角スペースがあれば色を付ける」 という処理をしています。

B列には英語の文字列と漢字の文字列があり、
漢字の文字列のみに処理をしたいです。

該当のソースコード

Sub test() Dim ws As Worksheet Set ws = Worksheets("Sheet1") Dim i For i = 1 To Range("B10000").End(xlUp).Row If InStr(ws.Range("B" & i), " ") > 0 Or InStr(ws.Range("B" & i), " ") > 0 Then ws.Range("B" & i).Interior.ColorIndex = 3 End If Next End Sub

試したこと

英字以外に処理をする というコードを書けばいいのかと思い、
調べたところ

VBA

1 Dim reg As New RegExp '// 正規表現クラスオブジェクト 2 3 '// 検索条件=英字以外を抽出 4 reg.Pattern = "[^a-zA-Z]"

このプログラムがでてきたのですが、これをどうIF文のなかにいれればいいのかが
わからないです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

英字以外に処理をする
つまり、
英字を含まないセルに対して処理をする
ということでよいのなら、
Like演算子を使って、

vba

1If Not ws.Range("B" & i) Like "*[a-zA-Z]*" Then 2 ws.Range("B" & i).Interior.ColorIndex = 3 3End If 4

投稿2021/09/10 06:59

hatena19

総合スコア33715

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

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

aaaskw123123

2021/09/10 09:28

ご回答ありがとうございます。 なるほどです! IF Not 初めて知りました! 勉強になります。
guest

0

こんな感じで。

VBA

1If reg.Test(ws.Range("B" & i)) Then 2

投稿2021/09/10 06:38

jinoji

総合スコア4585

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

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

aaaskw123123

2021/09/10 06:44

Dim reg As New RegExp reg.Pattern = "[^a-zA-Z]" If reg.Test(ws.Range("B" & i)) Then End If End sub
aaaskw123123

2021/09/10 06:45

ご回答ありがとうごいます。 ↑のようなコードになるのでしょうか?
jinoji

2021/09/10 06:57

そうです。
aaaskw123123

2021/09/10 07:04

Dim reg As New RegExp のところでユーザ定義型は定義されていません とエラーメッセージがでてしまいます。
jinoji

2021/09/10 07:15

参照設定をする必要があります。
aaaskw123123

2021/09/10 07:15

設定変更をしたら実行できたのですが、 英字にも処理がされてしまいます。
hex309

2021/09/10 08:21

横から失礼します。 実際に作成されたコードを提示されたほうがよろしいかと思います。
aaaskw123123

2021/09/10 09:29

最初のコードと同じです。
jinoji

2021/09/10 09:36

ちゃんと If reg.Test(ws.Range("B" & i)) Then ws.Range("B" & i).Interior.ColorIndex = 3 End If と囲みました?
guest

0

投稿2021/09/10 06:34

hex309

総合スコア761

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

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

aaaskw123123

2021/09/10 09:30

ご回答ありがとうございます!参考になります.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問