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

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

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

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

Q&A

解決済

2回答

292閲覧

VBA 条件付き書式設定について

gom-49

総合スコア2

VBA

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

0グッド

0クリップ

投稿2020/07/07 14:46

VBAでエクセルの条件付き書式設定をしたいのですがなかなかうまくいきません。

セルE5〜F74に数字をいれています。
これと、X95〜X125に含む数字を比較し、セルE5〜F74に同じ文字が含まれていたらセルの色を変えたいのです。

sub 条件付き書式設定()
If Range("E5:E74")Value=("X95:X125"&"*")Value
frm Setting Interior=RGB(204,204,504)
End If
End Sub

としましたが、全くだめでした。
今日初めたばかりの超ど素人です。

アドバイスお願いします。

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

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

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

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

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

radames1000

2020/07/07 23:56

手動で希望の条件付き書式の設定はできますか? それが出来ればマクロの記録で解決すると思います。
mattuwan

2020/07/09 04:40

>セルE5〜F74に数字をいれています。 >これと、X95〜X125に含む数字を比較 >セルE5〜F74に同じ文字が含まれていたら 数値として比較するのではなく、 文字としてあいまい検索をするのでしょうか? 例があると回答側もイメージしやすいです。
gom-49

2020/07/09 20:02

説明不足で申し訳ありません。 例を以下の通り記載しました。よろしくお願いします。 例 部品の仕様を比較します。 セルE5 DC110V,赤色 セルE74 AC220V,緑色 セルF5 3000A,その他仕様 セルF74 5000A,その他仕様 と記載しています。 セルX95 DC110V セルX100 DC200V セルX125 3000A です。 セルX95〜X125までの文字列が セルE5〜E74,F5〜F74に含まれているか調べたいのです。調べて該当するセルの色をかえたい。 条件付き書式設定ですればいいのですが、VBAで作りたいのですがいくら作ってもうまくいきません。 セルの完全一致ではなく、部分一致です。 なので、ワイルドカード ”*”を使おうとしました。
radames1000

2020/07/10 05:16

「条件付き書式」設定と書いてますが、エクセルの「条件付き書式」機能を使いたいわけじゃなく、VBAで値を判断して色を付けたいんですよね。きっと。
guest

回答2

0

ベストアンサー

希望している結果はこの様なものですか。
(Excel画面からの条件付き書式内容)
イメージ説明
VBAでのコードは下記になります。

VBA

1Sub Test_Sample_Miniature() 2 Dim MyRange As Range 3 Dim MyAddr As String 4 Dim MyFormat As String 5 For Each MyRange In Range("E5:E74") 6 MyAddr = MyRange.Address 7 MyFormat = "=ISERROR(VLOOKUP(" & MyAddr & ",$X$95:$X$125,1,FALSE))=FALSE" 8 MyRange.FormatConditions.Add Type:=xlExpression, Formula1:=MyFormat 9 MyRange.FormatConditions(1).SetFirstPriority 10 MyRange.FormatConditions(1).Interior.Color = RGB(204, 204, 255) 11 Next 12End Sub

参考Url:https://teratail.com/questions/267033

(追記)
基準セル値の中の一部一致で結果を返す事は関数では難しい様に思えます。
(データベース関数を使えば出来るのでしょうか・・・・?)
VBAでユーザー関数を作りましたので、これを標準モジュールへ貼り付けてVLOOKUPをVlookupRevMatchに入れ替えて動かして見て下さい。

VBA

1Option Explicit 2Function VlookupRevMatch( _ 3ByRef 検索値 As Range, _ 4ByRef 範囲 As Range, _ 5ByVal 列番号 As Integer, _ 6ByVal 検索方法 As Boolean _ 7) As Variant 8 Application.Volatile 9 Dim MyRange As Range 10 Dim blnError As Boolean: blnError = True 11 For Each MyRange In 範囲 12 If InStr(検索値, MyRange) <> 0 Then 13 VlookupRevMatch = MyRange 14 blnError = False 15 Exit For 16 End If 17 Next 18 If blnError = True Then VlookupRevMatch = CVErr(xlErrNA) 19End Function

また、MyRange.Address部分変更しています。
尚、ユーザー関数は数多く使うと重くなってしまう特徴あります。

投稿2020/07/08 00:37

編集2020/07/10 17:59
tosi

総合スコア553

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

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

gom-49

2020/07/11 02:56

ありがとうございました。もっと勉強していきます。
guest

0

イメージ説明
こんな感じで数えてみれば、いいと思います。

投稿2020/07/09 23:05

mattuwan

総合スコア2163

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問