- ベストアンサー
エクセル-1つのセルで16文字を越えるとセルに色をつけたい
タイトルのようなことをやりたいと思っています。 少し前に入力規則で16文字を越えるとエラー表示させるようにしたくて設定したのですが、文字列をコピー&ペーストすると、書式等も上書きされてエラー表示が出ずにスルーしてしまうので困っています。 ですので、16文字を越えた入力は自動的にセルの色が変わる(又は文字の色が変わる)ようにしたいのですが、関数・マクロ等でできるでしょうか? 初心者で何をどうすれば良いのかわかっていなくて、 質問がわかりにいかもしれませんがよろしくお願いいたします<(_ _)>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2のお礼の部分に関して >VBAを使う場合、対象となるシートを開いてAlt+f11で編集していけば良いのでしょうか ALT+PF11でVBE画面を開き、左上部のVBAProject(問題のブックの)のSheet1(問題のシートの)をダブルクリックして出てくる画面に#2のコードを貼り付けてください。 シートモジュールです。 シートに行くのは表示ーオブジェクトでも良いしタスクバーのエクセルをクリックでも良いでしょう。 エラーセルの入力内容を取り消すなら Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 Then If Len(Target) > 6 Then MsgBox "6桁オーバー" Target = "" End If End If End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
16文字(特に数字16桁)は微妙ですが、10文字超える、などは書式ー条件付き書式-数式がー=LEN(F9)>10ー書式設定で何も問題ないです。 しかし前の質問でも出た、コピーした場合の点は、コピー元の入力規則も、コピー先に持ち込むので、元の入力規則が消えます。ですから実現できません。 入力規則も条件付書式もこの点変わりません。 ーー 16桁以上の問題ですが、数値は15桁までで16桁以上は、超える後部桁が0にはなるが、色は付くようです。 文字列では問題ないようです。 ーー >関数・・でできるでしょうか 条件付き書式では、関数と似たものを「数式が」の場合に使います。 しかし関数ではできません。関数はセルの「値」を対象に細工するもので、条件付き書式や入力規則はセルの「値」ではありません。セルのデータは、重畳的構造になっていて、値、コメント、入力規則、数式など (「形式を選択して貼り付け」のダイアロウグの「貼り付け」部にそのことが伺えます)があり、関数は歴史的に一番古くからあるデータの、「値」だけを対象にしてます。 ーーー VBAでは Private Sub Worksheet_Change(ByVal Target As Range) If Len(Target) > 6 Then MsgBox "6桁オーバー" End If End Sub はコピー貼り付けにも対応するようです。(6桁超えの場合) ただしChangeイベントは曲者ですので、色々テストしてみてください。 C列の入力に限る場合だと Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 Then If Len(Target) > 6 Then MsgBox "6桁オーバー" End If End If End Sub
お礼
回答ありがとうございます。 VBAの使い方がわからず試せていませんが勉強してやってみたいと思います。 ちなみに入力する文字は数字ではなく文字列(住所なので少し数字は含みますが文字列で設定)です。 VBAを使う場合、対象となるシートを開いてAlt+f11で編集していけば良いのでしょうか?編集が終わった時にVBA上で保存してワークシートに戻ればOKですか? ご丁寧な回答に感謝しています。 よろしくお願いいたします。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
条件付き書式で 数式が =LEN(セル)>16 で書式設定
お礼
回答ありがとうございます。 すでにこの方法でやっていたのですが、エクセルの決まり上コピー&ペーストすると条件付き書式を設定していても上書きされてしまうため、使えませんでした。 別のセルに16文字を越えた場合にエラー表示させるように設定し、何とかしようと思います。 ありがとうございました。
お礼
お返事遅くなり申し訳ありません。PC不調の為なかなかここへこれませんでした<(_ _)> 貴重なご意見ありがとうございました。 とても参考になりました。 おかげでほぼやりたいことは、できました(*^^)v 本当にありがとうございました。