• ベストアンサー

VBA リストを参照して文字色を変える

リスト表と一覧表の2つの表があるとします。 例えば。 リストの中に下記が入力されています。 ああああ いいいい うううう ええええ おおおお このリストを参照して 一覧表にも“ああああ”があったら その文字を赤くする。 このマクロの組み方を教えてください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#144013
noname#144013
回答No.6

こんにちは。 FarEyesです。 > この後の作業は > どうしたら良いのでしょうか?? > (赤くさせる為には…) > > 今まではオブジェクトにマクロを登録して > ポッチで実行させてたんですが > その方法で出来ますか?? 今回のマクロは、「標準モジュール」に作成するようなマクロ(引数なしの関数形式のもの) のように、「マクロ実行ボタン」から実行するようなマクロではありません。 今回のマクロは、シート上の、   ・セルに値(文字列)を入れた時。   ・セルの値(文字列)を変更した時。(同じ値を入れた場合も含む) のタイミングに発生する、『セルの値が変更された』というイベント(Excelがシート オブジェクトに対して送る通知)を、シートオブジェクトが受け取った時に、実行され るマクロです。(※ワークシートのイベントプロシージャという種類のマクロです。) (※少し専門的で難しい話しなので、今は理解されなくても構いません。) 要するに、「セルに値を入れた時」、及び、「セルの値を変更した時」に、実行される マクロです。 ですので、今回のマクロは、既にセルに入っている値(文字列)に対しては、適用 されません。 既存のセルの文字色を変更する(赤くさせる)ためには、「一覧表」側のセルの値 (文字列)を、『もう一度入れ直す』(同じ値を入れる)必要があります。 「一覧表」側のセルの値(文字列)を入れ直す(同じ値を入れる)には、   1)「一覧表」側の先頭のセル(一番上の行のセル)を選択します。     ・マウスのワンクリックで選択状態にします。   2)ファンクションキーの[F2]キーを押します。     ・これで、セルの値が入力(変更)できる状態になります。     ・セル内のカーソル位置は、「文字列」の後の一番右端にあると思います。   3)そのまま、[Enter]キーを押します。     ・これで、セルの選択状態が次の行のセル(標準の設定ならば)に移動します。     ・この際、入力した文字列が、「リスト」側に登録してあれば、文字色が「赤」色      で表示される筈です。(※これで、マクロが正常に実行されたということです。)   4)上記3)で、セルの選択位置が次の行に移動したら、上記2)~3)の操作を     「一覧表」セルの終端(最後の行)まで繰り返します。 以上のような操作を行って下さい。 ※もっと簡単な方法があるかもしれませんが、取りあえず思い浮かんだ操作です。 「一覧表」側セルの行範囲を拡張(下方向への行追加)を行った際の、最後の空欄 セルから下方向に、新たに「文字列」を追加していく際にも、マクロは適用されると 思います。 ※マクロの設定では、シートの最終行(F列のみ)までカバーするようにしています。 ■補足 今回の件とは、直接関係ない話しなので、以下は蛇足になりますが、 どうやら、質問者さんは、Excel VBAの基本的なことから学ばれた方がよさそう ですので、参考になりそうなサイトを紹介致します。 <参考サイト> ◎Excel VBA 入門講座 http://excelvba.pc-users.net/ ◎Excel(エクセル)VBA入門 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/index.html できれば、Excel VBA関係の「入門書」なり「解説書」なりを一冊、ご用意されて その中に掲載されているサンプルマクロなどを、実際に自分で入力&実行して 試してみる作業を、繰り返し行ってみて下さい。 そして、作成したマクロを適当にいじってみて下さい。 ※エラーが出ても構いません。原因はそのうち解ってくると思います。 以上のような作業が、手っ取り早い学習方法かもしれません。 最初は何をやっているか理解できなくても構いません。 とにかく、実際の動作を『体感』してみるのが良い経験になるかと思います。 ⇒『習うより、慣れろ』です。 以上です。

m09020510
質問者

お礼

FarEyes様 何度も何度もありがとうございました。 自分でも色々試して見ます。 また何かあった時は宜しくお願いします。 初心者の私に親切にして頂いてありがとうございました。

その他の回答 (5)

noname#144013
noname#144013
回答No.5

こんにちは。 FarEyesです。 ひょっとして、「標準モジュール」にコピぺされていませんか? 今回のマクロは、「標準モジュール」ではなく、ワークシート側のコードモジュールに 実装するマクロです。 以下の操作を行って下さい。 1)VBE画面で、画面左側に「プロジェクトエクスプローラ」のツリー画面が表示されて   いると思いますが、   もしも、表示されていなければ、     「表示」 → 「プロジェクトエクスプローラ」   をクリックして表示させて下さい。 2)その中に、「VBAProject(Excelブックのファイル名)」のように書かれているもの   があると思います。   ※その部分をダブルクリックすると、ツリーが展開されると思います。 3)そのツリーの中に、「Sheet1(シート名)」とか「Sheet2(シート名)」のように書か   れているものがあると思います。   ※これが、ワークシートのコードモジュールで、ワークシートと1対1に対応して    います。 4)この「プロジェクトエクスプローラ」のツリー内の、対象シート(「リスト」のセル及び  「一覧表」のセルを設定したワークシート)に対応した、シートのコードモジュールを  ダブルクリックすると画面の右側に、「コード画面」が表示されると思います。 5)この「コード画面」に、#3のコードを、「そのまま」貼り付けて下さい。 /////↓ここから////////// Option Explicit ' '== シートのセルの値変更時のイベント処理 == Private Sub Worksheet_Change(ByVal Target As Range)     :     : End Sub /////↑ここまで////////// ※もしも、"Option Explicit"の行が、既にあった場合は、コピペした側の1行を  削除して、1箇所のみにして下さい。 6)それから、「標準モジュール」にコピペしたコードは、全て削除して下さい。 7)VBEの画面で、「デバッグ」→「VBA Projectのコンパイル」でコンパイルを   行ってみて下さい。   ※もしも、ここで何かしらのエラーが表示された場合は、      「エラー発生箇所のコード内容」 と 「表示されたエラーメッセージ」    を、ご報告願えないでしょうか?    もしくは、「ヘルプ」などを参照して、ご自身でエラーを修正して下さい。 8)上記7)で何もエラーが表示されなかった場合は、Excelのシート画面に   戻って下さい。 9)念のため、ここで一旦、Excelブックを「保存」して下さい。 10)ワークシートの「一覧表」のセルに、適当な文字列を入れて[Enter]キー   を押して下さい。   ※これで、セル更新のイベントが発生し、マクロが実行されると思います。   ※ここで、もしも、エラーが発生し場合は、      「エラー発生箇所のコード内容」 と 「表示されたエラーメッセージ」    を、ご報告願えないでしょうか?    もしくは、「ヘルプ」などを参照して、ご自身でエラーを修正して下さい。 ※添付画像は、VBE画面をキャプチャしたものです。 以上です。

m09020510
質問者

補足

ありがとうございます。 エラーなく貼付けが出来ました。 セルに文字を入れてもエラーは出ませんでした。 この後の作業は どうしたら良いのでしょうか?? (赤くさせる為には…) 今まではオブジェクトにマクロを登録して ポッチで実行させてたんですが その方法で出来ますか?? 無知で申し訳ありません。

noname#144013
noname#144013
回答No.4

こんにちは。 FarEyesです。 > そのままコピーぺしてやってみました。 何処に(どのモジュールに?)コピーされたのでしょう? #3の改造前のExcelブック(#2のコードが実装された時点のExcelブック)にコピー されたのでしょうか? その場合、改造前のコードを「全て削除」した上でコピーされたのでしょうか? 昔のコードが残っていて重複しているような部分はないでしょうか? ※マクロコードなどを修正・改造する場合は、修正前のExcelブックはそのままに  しておいて、別ファイルとしてExcelブックを保存してから修正を加えるか、新しい  Excelブックを作成し、そこに旧コードをコピー&ペーストして修正を加えるように  した方が良いと思います。 こちらでは、ご提示のエラーが再現できないので、原因がつかめないのですが、 念のため、以下の操作を行ってみて下さい。 1)Excelを起動して、「ファイル」→「新規作成」で、新しいブック(何も手を加えて   いない、まっさらなExcelブック)を作成して下さい。 2)作成したブックで、「Visual Basic Editor(VBE)」を起動して、シート1(Sheet1)   のコードモジュールへ、#3のコードをコピー&ペーストして貼り付けて下さい。 3)VBEの画面で、「デバッグ」→「VBA Projectのコンパイル」でコンパイルを   行ってみて下さい。   ※もしも、ここで何かしらのエラーが表示された場合は、      「エラー発生箇所のコード内容」 と 「表示されたエラーメッセージ」    を、ご報告願えないでしょうか?    もしくは、「ヘルプ」などを参照して、ご自身でエラーを修正して下さい。 4)上記3)で何もエラーが表示されなかった場合は、VBE画面を閉じて、Excelの   シート画面に戻って下さい。 5)シート1(Sheet1)に、必要な「リスト」データと、「一覧表」の枠のみ(※ここ   では、まだデータは記入しない)を作成して下さい。 6)ここで、一旦Excelブックを、「名前を付けて保存」で保存したのち、続けて、   Excelを終了させて下さい。   ※他のExcelブックを開いていた場合は、そのブックも終了させて下さい。    (Excelが完全に起動されていない状態にします。) 7)上記6)で保存したExcelブックを、再び開いて下さい。   ※この際、マクロを有効にして下さい。 8)シート1(Sheet1)の「一覧表」のセルに、適当な文字列を入れて[Enter]キー   を押して下さい。   ※これで、セル更新のイベントが発生し、マクロが実行されると思います。   ※ここで、もしも、エラーが発生し場合は、      「エラー発生箇所のコード内容」 と 「表示されたエラーメッセージ」    を、ご報告願えないでしょうか?    もしくは、「ヘルプ」などを参照して、ご自身でエラーを修正して下さい。 以上です。

m09020510
質問者

補足

本当にお手数をお掛けして申し訳ありません。 はじめてVBAを言葉を聞いたばかりなのに 会社でマクロの作成を迫られまして。。。 ごめんなさい。 コピペしたときはマッサラなところから始めたので 上書きなどはしてません。 色々試したエラーをお伝えしたいと思います。 ●そのまま(Option ExplicitからEnd Subまで)して 《F8》を押すとただエラーの音がするだけでした。 ●Option Explicitだけを消してらSub sample1()を投入したら End Subが必要ですというエラーが出ました。 ●Private Sub Worksheet_Change(ByVal Target As Range)に 'コメント(反映しないように)したら If Intersect(Target, Range("$F4:$F" & Rows.Count)) Is Nothing Then  がエラーになりました。 ●あとは色々いじってる間に気がついたのは “Target”がいつもエラーになってました。 ※〔ツール〕→〔オプション〕→〔変数の宣言を強制する〕の レ点は外してあります。 上手く説明できなくて申し訳ありません。 お手数をお掛けしますが宜しくお願いします。

noname#144013
noname#144013
回答No.3

こんにちは。 #2です。 > この方法は文字が一致した場合ですが > 一部の文字があった場合も赤くするには > どうしたら良いのでしょうか?? ご要望を解釈しますと、   「一覧表」側に入れた「文字列」 の中に、   「リスト」側に登録した「文字列」 が『含まれていた場合』に、「文字色を変更する」ということでしょうか? 言い換えますと、例えば、「リスト」側に、   そば という「文字列」が登録されていた場合で、「一覧表」側に、   そば と入れた場合でも、   ざるそば と入れた場合でも、   そばつゆ と入れた場合でも、「文字色を変更する」ということでしょうか? そうであった場合ですが、文字列の比較の際に、「Like演算子」を使用すれば 対応可能かと思います。 #2のマクロに、上記の改造を行ったものを掲載致します。 変更箇所は、見ていただければ解るかと思います。 ※コード内の、"@1"とコメントしてある部分が、追加&変更した箇所です。 ■改造後のマクロ 注)インデント等のため全角スペースを入れています。 ========================= Option Explicit ' '== シートのセルの値変更時のイベント処理 == Private Sub Worksheet_Change(ByVal Target As Range)   Dim nListEnd As Long  '「リスト」側のセル範囲の最終行の位置   Dim rgList As Range   '「リスト」側のセルオブジェクト取得用   Dim bFind As Boolean  '一致文字列の「あり/なし」判定フラグ   Dim sPattern As String '一致文字列を含む検索文字列(@1:追加)   '入力セルが「一覧表」側のセル範囲にあるかチェック   '※ここでの「一覧表」側のセル範囲の最終行はシートの最終行に設定しています。   If Intersect(Target, Range("$F4:$F" & Rows.Count)) Is Nothing Then     Exit Sub 'なければ戻る   End If   '入力セルが「空き」かチェック   If Target.Text = "" Then     Exit Sub '「空き」なら戻る   End If   '「リスト」側のセル範囲の最終行の位置を取得   nListEnd = Range("$B" & Rows.Count).End(xlUp).Row   '「リスト」側のセル範囲をループして一致する文字列を含んでいるかを   'チェックする   bFind = False     '一致フラグを「なし」で初期化   For Each rgList In Range("$B4:$B" & nListEnd)     sPattern = "*" & rgList.Text & "*" '検索文字列を作成(@1:追加)     If Target.Text Like sPattern Then  '文字列の比較(@1:変更)       '入力セルの文字列が「リスト」内の文字列を含んでいた場合       bFind = True '一致フラグを「あり」とする       Exit For   'ここでループを抜ける     End If   Next   '一致の「あり/なし」により入力セルのフォント色を設定   '※色番号は、標準のカラーパレットのカラーインデックス番号を使用しています。   If bFind = True Then     '一致あり(リスト内に同一文字列があった)の場合     Target.Font.ColorIndex = 3 'フォントの表示色を「赤」に設定   Else     '一致なし(リスト内に同一文字列がなかった)の場合     Target.Font.ColorIndex = 1 'フォントの表示色を「黒」に設定   End If End Sub ========================= 参考までに、上記改造後のシート画面のキャプチャ画像を添付しています。 以上です。

m09020510
質問者

補足

ありがとうございます。 そのままコピーぺしてやってみました。 実行時エラー'424' オブジェクトが必要です。 となってしまいました。 エラーが出てる箇所は If Intersect(Target, Range("$F4:$F" & Rows.Count)) Is Nothing Then です。 朝最初に回答いただいたのをやってみた時は出来たのですが…。 'コメントにしてみたら 次のIfのところでもエラーが出てしまいました。 何度も何度も申し訳ありません。 改善方法を教えてください。 宜しくお願いします。

noname#144013
noname#144013
回答No.2

こんにちは。 当方もマクロの一例を作成してみました。 #1さんご提示の2番目の方法と同じく、一覧表側のセルの値が変更 された際のイベント処理による方法です。 ■サンプルマクロ 注)インデント等のため全角スペースを入れています。 ※以下のコードは、対象シートのコードモジュールに貼り付けて下さい。 ※コード内の「リスト」側のセル範囲及び、「一覧表」側のセル範囲は、  ご使用の環境に合わせて、適せん変更して下さい。 ========================= Option Explicit ' '== シートのセルの値変更時のイベント処理 == Private Sub Worksheet_Change(ByVal Target As Range)   Dim nListEnd As Long '「リスト」側のセル範囲の最終行の位置   Dim rgList As Range  '「リスト」側のセルオブジェクト取得用   Dim bFind As Boolean '一致文字列の「あり/なし」判定フラグ   '入力セルが「一覧表」側のセル範囲にあるかチェック   '※ここでの「一覧表」側のセル範囲の最終行はシートの最終行に設定しています。   If Intersect(Target, Range("$F4:$F" & Rows.Count)) Is Nothing Then     Exit Sub 'なければ戻る   End If   '入力セルが「空き」かチェック   If Target.Text = "" Then     Exit Sub '「空き」なら戻る   End If   '「リスト」側のセル範囲の最終行の位置を取得   nListEnd = Range("$B" & Rows.Count).End(xlUp).Row   '「リスト」側のセル範囲をループして一致する文字列があるかチェック   bFind = False     '一致フラグを「なし」で初期化   For Each rgList In Range("$B4:$B" & nListEnd)     If Target.Text = rgList.Text Then       '入力セルの文字列が「リスト」内の文字列と一致した場合       bFind = True '一致フラグを「あり」とする       Exit For   'ここでループを抜ける     End If   Next   '一致の「あり/なし」により入力セルのフォント色を設定   '※色番号は、標準のカラーパレットのカラーインデックス番号を使用しています。   If bFind = True Then     '一致あり(リスト内に同一文字列があった)の場合     Target.Font.ColorIndex = 3 'フォントの表示色を「赤」に設定   Else     '一致なし(リスト内に同一文字列がなかった)の場合     Target.Font.ColorIndex = 1 'フォントの表示色を「黒」に設定   End If End Sub ========================= 因みに、今回の処理は、マクロを使用しなくても、ワークシート側の「条件付き書式」 の設定による方法でも対応可能だと思います。 以下は、その設定方法の一例です。 ■「条件付き書式」設定による設定手順 注)Excelのバージョンにより、操作方法などが違う場合があります。   ※当方は、Excel2000で試してみました。 1)色を付けたい側(「一覧表」側)のセル範囲を選択します。   ご提示の画像の場合、F4~F13 のセル範囲になります。 2)メニュー操作   「書式」 → 「条件付き書式」 をクリックします。 3)「条件付き書式の設定」のダイアログ画面の操作  ◎条件1の設定   ・左端のコンボボックスのリストより、「数式が」を選択   ・その右横の「数式」の欄に、下記の数式を設定     =ISERROR(MATCH(F4,$B$4:$B$65536,0))=FALSE     ※"$B$4:$B$65536" の部分は、「リスト」側のセル範囲を指定します。   ・[書式]ボタンをクリック     ・表示された「セルの書式設定」ダイアログ画面の、[フォント]タブを選択      して、フォントの「色」を、表示させたい色に設定します。     ・[OK]ボタンをクリックします。   ・元のダイアログ画面に戻ったら、[OK]ボタンをクリックしてダイアログを閉じ    ます。 以上で、設定完了です。 ※添付画像は、上記の「条件付き書式の設定」画面のキャプチャ画像です。 以上です。参考になれば幸いです。

m09020510
質問者

補足

ありがとうございます。 もう1つお聞きしたい事があります。 この方法は文字が一致した場合ですが 一部の文字があった場合も赤くするには どうしたら良いのでしょうか?? ↓↓ bFind = False 修正すれば良いですか?? すみません。 VBAをはじめたばかりなので… 宜しくお願いします。

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.1

簡単な作りですが多分動くと思われます。 一覧の行数が多いときは画面更新のコメントを解除してください。 Sub リストを参照して文字色を変える() On Error Resume Next 'Application.ScreenUpdating = False Dim Ret As Long Dim I As Long I = 4 Do While Range("F" & I).Value <> "" Ret = 0 Ret = Application.WorksheetFunction.Match(Range("F" & I).Value, Range("B4:B12").Value, 0) 'リストの行数が増える場合は↑変更必要 If Ret = 1 Then Range("F" & I).Font.ColorIndex = 3 Else Range("F" & I).Font.ColorIndex = 0 End If I = I + 1 Loop 'Application.ScreenUpdating = True End Sub 別の方法で一覧の入力時に色を付ける場合は↓ Private Sub Worksheet_Change(ByVal Target As Range) 'リスト・一覧の行数が増えてもメンテナンスフリー Dim I As Long I = 4 If Target.Column = 6 Then 'F列=6 Target.Font.ColorIndex = 0 Do While Range("B" & I).Value <> "" If Range("B" & I).Value = Target.Value Then Target.Font.ColorIndex = 3 Exit Sub End If I = I + 1 Loop End If End Sub で、如何でしょうか?

関連するQ&A

  • EXCEL2003の入力規則で別ブックのリスト参照について質問です。

    EXCEL2003の入力規則で別ブックのリスト参照について質問です。 ブック1に作成したリストを、ブック2で参照して一覧表を作成しています。 互いのブックを開いていると参照するのですが、ブック1(リストブック)を閉じてしまうと参照してくれません。 閉じたままでも参照してくれる方法は無いのでしょうか? 分かりましたら教えてください。

  • 外字作成時に参照する文字の見つけ方

    Win98SEとXPの両方を使っています 外字を作成するときに参照する文字を見つけるのに、私はWIN98SEでは、あらかじめ、infoseekマルチ辞書から、その参照する文字のシフトJISコードを調べておいて、ウィンドウ→参照の画面で、コード欄にそのシフトJIS番号を入力して、参照文字を表示させていました。 ところが、XPでは、このシフトJISコードを入れると、全く違う漢字を表示してしまうのです。「一覧表の中から目的のものを探して・・・」なんて簡単に書いてありますが、一覧表を繰って探して行くのは容易なことではありません。 1)どうしてXPではコードが違ってしまうのでしょうか? 2)簡単に目的の漢字を(探して)表示させるのに、なにか良い方法はありませんか?

  • リスト外入力

    アクセス2002を使っています。 フォームでコンボボックスを使用し一覧から選択できるようにしたのですが、一覧にない文字列を入力しようとすると「一覧から選択して下さい」とメッセージが出て入力できません。 一覧にない文字列も入力できるようにしたいのですが、どなたか教えていただけませんか? フォームのプロパティで「リスト外入力」という項目がありますが、このプロシジャでマクロを設定すればできるのでしょうか? よろしくお願い致します。

  • EXCEL:入力規則の「リスト」は別シートを参照できない

    表の中の項目をVLOOKUP関数を使って入力したいのですが、 検索値(文字列)の入力者が多数いるので 「入力規則」の「リスト」を使って入力するようにしました。 VLOOKUP関数は別シートの範囲も指定出来ますが リストは同じシート内に元の値を設定しなければならないので、 同じようなシートが多数ある場合、全てのシートに同じデータ(元の値)を入力しなければならず大変です。 何か良い方法はないでしょうか。 上司はマクロを使ったら?と言いますが どんなマクロを使ったら出来そうなのか見当が付きません。 どなたかアドバイスよろしくお願い致します。

  • エクセルでリストの文字を大きくしたい

    エクセルで,表を作っていて,ある列のセルに入力規則で,リストを持たせているのですが,そのリストが表示されるときの文字(▼をクリックしたときに開くウインドウの中の文字)のフォントを大きくすることは出来るでしょうか? 表示画面の関係で,ズームは固定しなければなりません。

  • 文字列リストから文字列リストの抽出

    A列のリストの文字列に、B列のリストの文字が含まれていたらそれを取り出すにはどうしたらよいでしょうか? ※画像を参照してください。 例:A2セルの文字列にB2~B4の文字が含まれていないかをチェック、含まれていた文字列(B2~B4の内容)をC列に表示する。 関数なら何とかできますが、マクロの知識がほとんどありませんのでマクロが必要になるようでしたら詳しく教えていただければ幸いです。 よろしくお願いいたします。

  • エクセル VBA リストを参照して 色を変えたい

    Sheet1に リストとして       A    B    C    D --+-------+-------+-------+-------+------+-------+------- 1   山田 --+-------+-------+-------+-------+------+-------+------- 2   鈴木 --+-------+-------+-------+-------+------+-------+------- 3   佐藤 --+-------+-------+-------+-------+------+-------+------- 4   内藤 Sheet2に 一覧表として       A    B     C    D --+-------+-------+-------+-------+------+-------+------- 1   山田   赤松   斎藤   内藤 --+-------+-------+-------+-------+------+-------+------- 2   佐藤   清水   鈴木   米田 --+-------+-------+-------+-------+------+-------+------- 3   上田   今川   藤本   越崎 --+-------+-------+-------+-------+------+-------+------- 4   千葉   尾崎   松田   安西 と、作成した場合、Sheet1のリストにある名前のみ フォントカラーを赤にするマクロを組んでいただきたいのですが・・・ 宜しくお願いします。

  • エクセル リストボックスについて

    現在、エクセルにて入力フォームを作っているんですが、入力規則の設定のとこでつまづいています。 つまづいているのは、例えば・・・リスト一覧の表を別のファイルのシートに用意をします。ここでの仮名として「リスト一覧表」を作ったとします。 そして本ファイルであるシートの中のセル(D10)に「リスト一覧表」から入力規則のように表示をするためにコンボボックスを使い、 「リスト一覧表」から使いたいリストを選んで「D10」に表示をして、 なおかつ、印刷時には「コンボボックス」の表示を出したくありません。そこで表示を消すにはどうしたらいいのか教えてください。 よろしくお願いいたします。

  • 入力規則のリストで大文字小文字を区別させたい

    入力規則で元の値に直接リストを書き込んだ場合は、大文字小文字も区別されますよね。 元の値にセルの範囲や名前の定義で範囲を指定したものにした場合、大文字小文字が区別されずに困っております。 例えばシート2のA列をリストの範囲として「一覧」と名前の定義をしたとして、元の値に =一覧 と入れるとちゃんとリストとしては機能します。 ただ、入力規則を設定したセルに直接入力した場合、リストにない単語についてはきちんとエラーメッセージが出てはじかれますが、小文字大文字までは区別してくれません。 例えば、リストの中に「abc」という小文字だけの単語があったとして、セルに「Abc」と大文字を混ぜて直接入力してもそのまま書き込むことができてしまうのです。 「abc」だけを許可して「Abc」だの「aBC」だの大文字を混ぜた物はエラーとしてはじいて欲しいのですが、そういうことはできないのでしょうか? 入力規則だけで片付けたいのですが、VBAを絡めないと無理でしょうか?

  • 条件によってリストの文字色を変える。

    条件によってリストの文字色を変える。 下記のことは可能でしょうか よろしくお願いします。 ユーザーフォーム内のリストボックスです。 表示されるリストを文字内容によって色を付ける。 ---リストボックス--- あああ       ---文字の色を黒にする いいい 入力済   ---入力済となっている場合は、文字の色を赤にする ううう 入力済   ---入力済となっている場合は、文字の色を赤にする えええ       ---文字の色を黒にする おおお       ---文字の色を黒にする ---       ---