
いつもお世話になっております。
この度、下記の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.3ベストアンサー
- 回答日時:
ここを
myReg.Pattern = "(パソコン|レッツノート|Lenovo|HP)"
こうする。
myReg.Pattern = Join(WorksheetFunction.Transpose(Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row)), "|")
ママチャリ様、回答ありがとうございます。
この様にSheet2を指定する方法があるのですね。
提示いただきました構文を組み込み理想の処理ができました。
この度はありがとうございました。
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名を指定するのですね。
勉強になります。
今後別シート名になることも考慮しこちらの構文も活用させていただきます。
ありがとうございました。
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.4
- 回答日時:
No.1のお礼について。
珍しいケースでしたので思わず見落としてました。
No.3 ママチャリ様の方法がスマートと思います。
コードに一部修正について(別シート指定)はお礼にコメントを入れるなりして、対応を追加お願いされてみては?
No.2
- 回答日時:
回答ではありません。
質問の確認です。現在の仕様
E10のセルに文字が記入されていて、「パソコン、レッツノート、Lenovo、HP」
のいずれかの文字がE10内にあれば、その文字を強調文字にしている。
改良したいこと。
E10のセルに文字が記入されていて、
Sheet2のD2~Dの末尾までに、入力されている文字の何れか
の文字がE10内にあれば、その文字を強調文字にしたい。
従って、Sheet2に
D2:パソコン
D3:レッツノート
D4:Lenovo
D5:HP
と記入されていた場合は、現在の仕様と全く同じ結果になる。
と理解したのですがあってますでしょうか?
tatsumaru77様、質問のご確認ありがとうございます。
改良の内容ですが、tatsumaru77様のご指摘にございます内容で合っております。
よろしくお願いいたします。
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より末尾】に設定したい改良になります。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のExcelファイルをマージす...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】並び替えの範囲が、...
-
VBAの「To」という語句について
-
vbsでのwebフォームへの入力制限?
-
Vba セルの4辺について罫線が有...
-
【マクロ】変数を使った、文字...
-
Vba FileSystemObject オブジェ...
-
エクセルのマクロについて教え...
-
VBAでユーザーフォームを指定回...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】シートの変数へ入れ...
-
エクセルのVBAコードと数式につ...
-
ワードの図形にマクロを登録で...
-
改行文字「vbCrLf」とは
-
エクセルVBA 検索結果を隣のシ...
-
【マクロ】モジュール変数の記...
-
Excelのマクロについて教えてく...
-
ダブルクリックで貼り付けた画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
時間の判定条件
-
SQLについて
-
ActiveReports
-
accessvbaで内容を結合して保存
-
VBA 条件に合わせたデータ抽出
-
指定文字を太字にするVBAを別シ...
-
配列への分割方法
-
複数のデータテーブルのデータ...
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
単一グループのグループ関数で...
-
Oracleで「文字が無効です」の...
-
SELECT FOR UPDATE で該当レコ...
-
【PL/SQL】FROM区に変数を使う方法
-
レコードの登録順がおかしい
-
select文の実行結果に空白行を...
-
where句中のtrim関数について
-
count関数の値をwhere句で使用...
-
データ
-
SQL*Loader Append
おすすめ情報