- ベストアンサー
エクセル:入力規則(リスト)で選択方法
- エクセルの入力規則(リスト)を使用して選択方法を実現する方法について説明します。
- 選択したセルに応じて他のセルの選択肢を表示する方法についても詳しく解説します。
- 学校名の変更に伴って自動的に関連するセルの内容をクリアする方法を紹介します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.2・3です! たびたびごめんなさい。 前回のコードはC・D列消去のコードになっていました。 投稿の最後の部分を逆にしてください。 >Target.Offset(, 1).ClearContents でD列だけの消去となります。 何度も失礼しました。m(_ _)m
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
No.2です。 補足・お礼を読みました。 C列に変更があればその行のD列だけを消去すれば良い訳ですね? ↓のコードに変更してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim c As Range If Intersect(Target, Range("C6:C35")) Is Nothing Then Exit Sub For Each c In Target Target.Offset(, 1).Resize(, 2).ClearContents Next c End Sub 'この行まで ※ C列の複数セルを選択 → 一気に消去 という操作もあると思いますので、 上記のようなコードにしてみました。 前回のコードは2列消去するようにしていましたが、 こんなんで良いのでしょうか? 前回同様、右隣りの2列を消去する場合は >Target.Offset(, 1).ClearContents の行を >Target.Offset(, 1).Resize(, 2).ClearContents に変更してみてください。m(_ _)m
お礼
ありがとうございます^^
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! VBAになってしまいますが・・・ 仮にA2セルに入力規則で「学校名」のリスト設定をしているとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストし、A2セルのデータを変更してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Target.Address = "$A$2" Then Target.Offset(, 1).Resize(, 2).ClearContents End If End Sub 'この行まで ※ 実際はもっと多くの行をリスト設定されているかと思いますが、 その場合、若干コードが変わってきます。m(_ _)m
お礼
ありがとうございます! 1行のみで実行したらきちんと動きました(^^) VBAが全く分からなく質問の仕方もあやふやで申し訳ないのですがtom04さんがおっしゃる通り、実際にはもっと行数が多いです。 実際には seet1のC6~C35が学校名 seet1のD6~D35がクラス名 C7を変更したらD7が消える C25を変更したらD7が消える とそれぞれの行に対応させたいのですが このような場合どうしたら良いでしょうか?
補足
すみません。。 お礼の実際には~~を間違えてしまいました。 seet1のC6~C35が学校名 seet1のD6~D35がクラス名 C7を変更したらD7が消える C25を変更したらD7が消える×⇒D25が消える○ 宜しくお願い致しますm(_ _)m
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
添付画像が縮小され不鮮明なので、画像があまり参考にできません。 ただし、 >学校名を変更するとクラス・名簿が自動的に消えるようにしたい は、一般機能ではできません。 条件付き書式を使って、見かけ上、背景色と文字を同じ色にするか、 目立つ色にして、違ってるよってイメージづけるくらいだと思います。
お礼
見にくい添付申し訳ありませんでした。。 ご回答ありがとうございました!
お礼
お礼遅くなり申し訳ありませんでしたm(_ _)m 本当にありがとうございます^^ ベストアンサーにさせて頂きました!