いつもお世話になっております。
この度、下記の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で質問しましょう!
似たような質問が見つかりました
- 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ランキング
-
2つのマクロでチェックボックス...
-
Vba SelStart、SelLen教えてく...
-
【VBA】マクロの入ったファイル...
-
現在のブックを閉じないで、マ...
-
ユーザーフォームに別シートか...
-
A列に記載されているフォルダ...
-
VBA 別ブックからコピペしたい...
-
VBA 複数条件の分岐処理の上手...
-
VBAに詳しい方教えてください。
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
Outlookの「受信日時」「件名」...
-
VBA listBoxから
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ExcelのVBAコードについて教え...
-
エクセルのマクロについて教え...
-
Outlookの「受信日時」「送信者...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6のオラクルのバインド変数
-
oo4oを使ったOracleへのデータ...
-
accessvbaで内容を結合して保存
-
拡張GerberデータRX-274Xについて
-
SQL文で
-
SQL構文
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
select文の実行結果に空白行を...
-
<SQL>重複しているデータの場合...
-
エクセルのソートについて
-
【PL/SQL】FROM区に変数を使う方法
-
単一グループのグループ関数で...
-
count関数の値をwhere句で使用...
-
複数のテーブルから値を合計出...
-
SELECT FOR UPDATE で該当レコ...
-
AccessのSQL文で1件のみヒット...
-
2つの列が同じ値の行を取得するSQL
-
Oracleで「文字が無効です」の...
-
トランザクションログを出力せ...
おすすめ情報