- ベストアンサー
【Excel】入力規則のリスト表示について
教えて下さい! 以前こちらで質問し、関数では教えて頂いたのですが・・・ Excelで入力規則のドロップダウンリスト「A」「B」の2つを作り、 「A」で選んだ内容によって、「B」で選択できる内容を変化させたいと 考えています。 INDIRECT関数を使用し、内容を変化させることは出来るようになったのですが 「A」を選択し直すと、「B」にすでに入力されているデータが一度クリアされ 空白の状態からリストを選択し、文字を入力するにはどうしたらよいでしょうか? Excelの標準的な方法では出来ないというお話があり、条件付き書式で =COUNTIF(INDIRECT(「A」),「B」)=0 で、文字色を白にし見えないようにする方法は教えて頂きました。 ですがこれで行うとExcel自体がエラーで閉じてしまいます。(Excel2002) マクロを使用した方法で文字をクリアすることも難しいのでしょうか??
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 補足質問読みました。 が、いまいちよくわかりません。 こういうこと↓ですか? A2セルのリストから、松・竹・梅のいずれかが選択できる。 松をクリックして選択 B2セルのリストからひとつ選択 ふたたび A2セルに戻って、またまた 松をクリック!! B2セルがクリアされる (T_T) ということだとして、どうしてワザワザおんなじものを選ぶんだかと思ってしまうのですが、、、 一応修正しました。 該当するシートタブを右クリック~コードの表示 #1のコードをマウスでドラッグして範囲指定~DELETEキーで削除 ↓のコードをコピーして貼り付けてください。 '-----------------↓ココから Private Sub Worksheet_Change(ByVal Target As Range) Dim myBefore As String Dim myAfter As String If Target.Count <> 1 Then Exit Sub If Not Application.Intersect(Target, Range("A2:A10")) Is Nothing Then Application.EnableEvents = False myAfter = Target.Value Application.Undo myBefore = Target.Value Target.Value = myAfter If myAfter <> myBefore Then Target.Offset(0, 1).ClearContents End If Application.EnableEvents = True End If End Sub '-----------------↑ココまで ALT+Qキーでワークシートに戻り、動作確認してください。 ◆#1のコードでとりあえずうまくいったのならだいじょうぶとは思いますが、値を変更した右隣のセルがクリアされます。 ◆Range("A2:A10") で指定するのは、「A」の範囲のみです。「B」の範囲は指定しないでください。( ←←"A2:B10" のようにはしないでください、ということです。"A2:B10"にすると、 B列の値を変更したら C列の値がクリアされてしまいます、念のため )
その他の回答 (2)
前の質問は読んでいませんので (no分からないし) 重複していたらごめんなさい。 こういった場合 http://www2.odn.ne.jp/excel/waza/validation.html#SEC5 のように OFFSETとMATCHがいいと思います
お礼
リストで表示する方法は出来たんですが、その後の表示方法について 解答を求めていました。 ご解答ありがとうございました。
- EL-SUR
- ベストアンサー率76% (83/108)
セル位置、範囲がわからないので推測ですが、、、 入力規則が設定されている範囲が A2:B10だとします。 該当するシートタブを右クリック~コードの表示 右のコードウィンドウに↓をコピーして貼り付けてみてください。 '-------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, Range("A2:A10")) Is Nothing Then Target.Offset(0, 1).ClearContents End If End Sub '-------------------------------- ALT+Qキーでワークシートに戻ります。 動作を確認してください。 ◆範囲を変更する場合は、2行目 Range("A2:A10") を修正してください。
補足
早速のご回答、ありがとうございます。 クリアすることが出来ました◎ また、もう一つ質問させて頂いてよろしいですか? この方法で「A」を選択後「B」を選択し、再度「A」の同じ項目(最初に選択したものと同じもの) を選択すると「A」に入っていたデータに変わりはないのにクリアされて しまいますよね? これを「A」に入っているものが同じデータである場合は、クリアされないようにする にはどうしたらよいでしょうか??
お礼
求めていた解答です!出来ました。 ありがとうございました。