
こんばんは。
excel vba のchangeイベントを教えてください。
・シートは3種類あります。(元、A、B)
・元シートの F列に日付1、G列に商品名、H列に日付2
①元シートの F列に日付1(入力有)、G列に商品名(入力有)、H列が空白の場合、シートA(A:Z)、シートB(A:Z)にG列と同じ商品名があればそのセルフォントを赤文字にする。
②元シートの F列に日付1(入力有)、G列に商品名(入力有)、H列に日付ありの場合、シートA(A:Z)、シートB(A:Z)にG列と同じ商品名があればそのセルフォントを白文字にする。
※元シートのG列商品名は元シートのF列、H列の日付が両方入った場合は、G列にまた入ってきます。
文字が入った時の簡単なchangeイベントはできるのですが、商品名を検索してchangeイベントが出来ません。
ご教示よろしくお願い致します。
(関数ではなくVBAでお願い致します)
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
「文字が入った時の簡単なchangeイベントはできる」とのことなので、入力された商品名の取得や日付1,2の条件判定は、すでに自力で出来ているってことで良いんですよね?
そうなると、分からないのは「商品名で検索して、フォント色を変える」ところのみですよね?
であれば、FINDメソッドより、Range.Replace メソッドの方が簡単です。こんな感じです。
Application.ReplaceFormat.Font.Color = 255
Cells.Replace What:="BBB", Replacement:="BBB", LookAt:=xlWhole, ReplaceFormat:=True
上記の例は、アクティブシートのすべてのセルを対象に、文字”BBB"を”BBB"に置換(結局、文字としては、何も変わらない)。同時にフォントカラーを赤に置換しています。
ママチャリさん、ご回答ありがとうございます。
"BBB"の商品名が300種類ぐらいあります。
種類が少ないときはreplaceでいいと思うのですが、種類が多いときはfindメソッドがいいでしょうか?
No.1
- 回答日時:
こんばんは
ご質問文を読んでも、よく理解できないのですが・・・
「関数が入っているセルの値が変わっても、Changeイベントが発生しない」という意味のご質問でしょうか?
それとも、イベント処理のVBAの内容を作成できないというご質問でしょうか?
どちらかなのわからないので・・
◇前者の場合
直接そのセルをチェックするのではなく、関数の参照元の変更をチェックすれば宜しいでしょう。
あるいは、その関数をユーザー定義関数化(=見かけだけで良い)しておけば、当該セルの再計算が発生した時点でとらえることは可能になると思います。
ただし、ユーザ定義関数からは、書式を直接変更することができなかったかも知れません。
(記憶が曖昧です。すみません)
◇後者の場合
対象範囲から同じ値の存在を探せば良いだけなので、FINDメソッドでチェックするか、またはWorksheetFunctionを利用しても(COUNTIFなど)チェックは可能と思います。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
https://docs.microsoft.com/ja-jp/office/vba/api/ …
とは言え、ご質問の内容であれば、セルに「条件付き書式」を設定しておけばすむことのように思われますので、VBAを用いる必要もなさそうに感じますけれど・・
fujillinさん、ご回答ありがとうございます。
質問が伝わり辛く申し訳ありません。
質問は後者になります。
findメソッド調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
確定申告しなかった・無申告の人をどうやって見つけるのか元国税調査官に聞いてみた
無申告の方などを対象に税務調査を行う国税局の元税務調査官さんに、どう無申告を探すのか聞いてきました。
-
VBA リストボックスをダブルクリックしデータを修正したいのですが…。
Visual Basic(VBA)
-
Excelマクロのコードができる方に質問します。
Visual Basic(VBA)
-
リストボックスについて
Excel(エクセル)
-
4
【関数orVBA】カーソルのある行を黄色にし、A列の値を別シートに表示できますか?
Visual Basic(VBA)
-
5
VBA RemoveDuplicatesで「アプリケーション定義またはオブジェクト定義のエラーです」
Visual Basic(VBA)
-
6
VBA public変数はどのようなことをしたら解放されますか?
Visual Basic(VBA)
-
7
VBA CSV取り込みについて
Visual Basic(VBA)
-
8
VBAでtxtファイルを読み込む際にtabを認識したい
Visual Basic(VBA)
-
9
配列の書き出しコードについての質問
Visual Basic(VBA)
-
10
複数のcsvをVBAでマージする方法をご教示ください!
Visual Basic(VBA)
-
11
連想配列について
Visual Basic(VBA)
-
12
VBAの質問です msg = ws.Cells(r, A").Value & "日に" & ws."
Visual Basic(VBA)
-
13
VBAで、オートフィルタで非表示になっている行の高さを取得したい
Visual Basic(VBA)
-
14
VBA 自作カレンダー コマンドボタンについて
Visual Basic(VBA)
-
15
VBAバーコード照合 バーコードリーダーがPCについており、 バーコードを読み取るとセルに入力され、
Visual Basic(VBA)
-
16
エクセルでのVBAとパイソン活用
Excel(エクセル)
-
17
VBA。リストボックスの値を別のユーザーフォームのテキストボックスに反映したい。
Access(アクセス)
-
18
エクセルVBAの配列二重ループ処理コードの書き方につきまして。
Excel(エクセル)
-
19
CSVファイルの比較と結果の取得(2次元配列へ)について。
Visual Basic(VBA)
-
20
エクセルVBAについての質問です。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
screenupdatingが機能しなくて...
-
5
特定のセルが空白だったら、そ...
-
6
VBAでマクロ実行中はExcelのマ...
-
7
EXCELのVBA-フィルタ抽出後の...
-
8
セル色なしの行一括削除
-
9
ユーザーフォーム内のテキスト...
-
10
【VBA ・ エクセル】 テキスト...
-
11
連続する複数のセル値がすべて0...
-
12
【VBA】指定したセルと同じ値で...
-
13
エクセルvba:自己セルの情報取...
-
14
クリックされたセルの位置を取...
-
15
【EXCEL VBA】Range("A:A").Fi...
-
16
HTMLでVLOOKUP関数のようなこと...
-
17
Excelのハイパーリンクにマクロ...
-
18
【Excel】セルの背景色、文字色...
-
19
B列に特定の文字列が入っている...
-
20
ExcelのVBAでメッセージボック...
おすすめ情報
公式facebook
公式twitter