いつもお世話になっております。
この度、下記のVBAの構文で指定文字を別シートを参照する形にしたい場合には、どの様な(構文)改良が必要かご教示をいただきたく質問させていただきました。
Sub 文言強調()
Dim myReg As Object
Dim m
Range("E10").Replace " ", " ", xlPart
Set myReg = CreateObject("VBScript.RegExp")
myReg.Pattern = "(パソコン|レッツノート|Lenovo|HP)"
myReg.Global = True
With Range("E10")
If myReg.test(.Value) Then
For Each m In myReg.Execute(.Value)
With .Characters(Start:=m.Firstindex + 1, Length:=m.Length).Font
.Underline = xlUnderlineStyleDouble
.Bold = True
End With
Next
End If
End With
End Sub
指定文字の
myReg.Pattern = "(パソコン|レッツノート|Lenovo|HP)"
の構文を(例えば【Sheet2】の【D2】~下方向の末尾まで)に入力されているデータを条件にしたいと考えております。
どうぞよろしくお願いいたします。
No.1
- 回答日時:
未検証のスマホ打ちですから違っているかもですけど。
Sub 文言強調()
Dim myReg As Object
Dim m, Dim r As range
Set myReg = CreateObject("VBScript.RegExp")
myReg.Pattern = "(パソコン|レッツノート|Lenovo|HP)"
myReg.Global = True
with worksheets("Sheet2")
for each r in .range("D2", cells(rows.count, "D").end(xlup))
With r
r.Replace " ", " ", xlPart
If myReg.test(.Value) Then
For Each m In myReg.Execute(.Value)
With .Characters(Start:=m.Firstindex + 1, Length:=m.Length).Font
.Underline = xlUnderlineStyleDouble
.Bold = True
End With
Next
End If
End With
end with
End Sub
めぐみん_様、いつもお世話になっております。
回答に重ねVBAの構築ありがとうございます。
私の分かりにくい説明で大変申し訳ございません。
補足させていただきます。
myReg.Pattern = "(パソコン|レッツノート|Lenovo|HP)"
こちらの直接指定されております文字の構文を【Sheet2】の【D2より末尾】に設定したい改良になります。
よろしくお願いいたします。
No.2
- 回答日時:
回答ではありません。
質問の確認です。現在の仕様
E10のセルに文字が記入されていて、「パソコン、レッツノート、Lenovo、HP」
のいずれかの文字がE10内にあれば、その文字を強調文字にしている。
改良したいこと。
E10のセルに文字が記入されていて、
Sheet2のD2~Dの末尾までに、入力されている文字の何れか
の文字がE10内にあれば、その文字を強調文字にしたい。
従って、Sheet2に
D2:パソコン
D3:レッツノート
D4:Lenovo
D5:HP
と記入されていた場合は、現在の仕様と全く同じ結果になる。
と理解したのですがあってますでしょうか?
tatsumaru77様、質問のご確認ありがとうございます。
改良の内容ですが、tatsumaru77様のご指摘にございます内容で合っております。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
ここを
myReg.Pattern = "(パソコン|レッツノート|Lenovo|HP)"
こうする。
myReg.Pattern = Join(WorksheetFunction.Transpose(Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row)), "|")
ママチャリ様、回答ありがとうございます。
この様にSheet2を指定する方法があるのですね。
提示いただきました構文を組み込み理想の処理ができました。
この度はありがとうございました。
No.4
- 回答日時:
No.1のお礼について。
珍しいケースでしたので思わず見落としてました。
No.3 ママチャリ様の方法がスマートと思います。
コードに一部修正について(別シート指定)はお礼にコメントを入れるなりして、対応を追加お願いされてみては?
No.5
- 回答日時:
ママチャリさんのパクリです。
myReg.Pattern = "(パソコン|レッツノート|Lenovo|HP)"
を以下のように修正してください。
With Worksheets("Sheet2")
myReg.Pattern = Join(WorksheetFunction.Transpose(.Range("D2:D" & .Cells(Rows.Count, "D").End(xlUp).Row)), "|")
End With
No.6
- 回答日時:
No.4です。
そのままかぶり過ぎるのもマナー的に恐縮なので、
ちょっと変えてみて。
With Worksheets("Sheet2")
myReg.Pattern = Join(WorksheetFunction.Transpose(.Range("D2", .Cells(Rows.Count, "D").End(xlUp))), "|")
End With
めぐみん様、回答ありがとうございます。
With Worksheets("Sheet2")
この様にSheet名を指定するのですね。
勉強になります。
今後別シート名になることも考慮しこちらの構文も活用させていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Excel(エクセル) VBA カゥントで数値の範囲を規制 1 2022/05/20 06:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
oo4oを使ったOracleへのデータ...
-
SQLローダーCSV取込で、囲み文...
-
select文の実行結果に空白行を...
-
レコードの登録順がおかしい
-
where句中のtrim関数について
-
Oracleで「文字が無効です」の...
-
テーブルの最後(最新)のレコー...
-
<SQL>重複しているデータの場合...
-
AccessのSQL文で1件のみヒット...
-
単一グループのグループ関数で...
-
ファイルの漢数字の順番につい...
-
【PL/SQL】FROM区に変数を使う方法
-
アクセスのレポートでレコード...
-
これをSQL文で出来るでしょうか?
-
トランザクションログを出力せ...
-
SELECTした合計値をそのまま割...
-
大量レコードをTRUNCATEせずに...
-
SQLで条件にヒットしたレコード...
-
SQL文 複数実行
-
コンボボックスのソートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6のオラクルのバインド変数
-
oo4oを使ったOracleへのデータ...
-
指定文字を太字にするVBAを別シ...
-
配列への分割方法
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
select文の実行結果に空白行を...
-
テーブルの最後(最新)のレコー...
-
count関数の値をwhere句で使用...
-
【PL/SQL】FROM区に変数を使う方法
-
SELECT FOR UPDATE で該当レコ...
-
2つの列が同じ値の行を取得するSQL
-
レコードの登録順がおかしい
-
<SQL>重複しているデータの場合...
-
AccessのSQL文で1件のみヒット...
-
アクセスのレポートでレコード...
-
where句中のtrim関数について
-
複数のテーブルから値を合計出...
-
エクセル、並び替え正しくソー...
-
Oracleで「文字が無効です」の...
おすすめ情報