プルダウンリストで選択した値に対して、別のプルダウンを連動させようと
INDIRECTを使ったのですが、再選択をすると、最初に連動した内容が残ったままになります。
再選択をした際、連動した別のセルの入力規制のリストを変更する方法はないかと調べ、
VBAを利用する方法があり、まねしようとしてもうまくいきません。
VBAを利用しない方法が希望ですが、どうやら難しいようですので、
VBAの知識があまりなくてもできる方法を教えていただけると助かります。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは。
理解が至っていないかも知れませんが、
> ... 再選択をすると、最初に連動した内容が残ったままになります。
[種類]を変更した時に、対応した[商品分類]セルの値を消去したい、
ということでしたら、それは、Excel一般機能では無理ですから、
完全にVBA/マクロでやるしかない範疇です。
質問者さんがやろうとしていることは、PCプログラム作り、ですね。
2つの[入力規則][リスト]の連動については、現状のまま、
ただただ、
「[種類]入力セルを変更したら、[商品分類]入力セルを空にする」
ということを、
VBAで実現させれば十分であろうと思われます。
スクリプト■(11行)
Private Sub Worksheet_Change(ByVal Target As Range) ' ▼この行から
Dim myTgt As Range
Dim c As Range
Set myTgt = Intersect(Target, Range("C2:C163")) ' ◆要指定1◆Range("種類を選択するセル範囲をA1形式で")
If myTgt Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In myTgt
c.Offset(0, 2).ClearContents ' ◆要指定2◆.Offset(行オフセット, 列オフセット)
Next
Application.EnableEvents = True
End Sub ' ▲この行まで
手順0■上記スクリプトに対して、
質問の説明文で不足した情報(「何が何処にあるか」)について、
そちらで、2点、修正を加えてください。
◆要指定1◆には、
[種類]入力セルとして[入力規則][リスト]が設定されたセル範囲すべてを
"C2:C163"のように""ダヌルクオートで括ったセル参照を
実際にお使いの条件に合わせて指定、修正します。
◆要指定2◆には、
[種類]入力セルからみて[商品分類]入力セルの相対的な位置関係を指定します。
.Offset(0, 2)と指定してあるのは、「同じ行の2列右」という意味です。
実際にお使いの条件に合わせて指定、修正します。
手順1■修正済の上記スクリプトを(11行全文、過不足なく)コピーしておく
手順2■対象のExcelシートの下部、シートタブを右クリックして
[コードの表示]を押す。
手順3■VBAの編集画面が現れたら、そもまま、[Ctrl]+[V]キーを押して、
上記にコードを貼り付ける。
手順4■VBAの編集画面[閉じる]ボタンでExcel画面に戻る。
手順5■動作を確認。
手順6■[上書き保存]。
但し、現在のブックがマクロを使えないファイル形式(*.xlsx)だった場合は、
[名前を付けて保存]から
[ファイルの種類]を[Excel マクロ有効ブック (*.xlsm)]に指定して
新たに保存し、以後、ここで保存したブックを使用する。
手順、以上です。
動作確認、してくださいね。
特に説明が無かったので、
[種類]入力セルと[商品分類]入力セルとは一対一で対応している、
という前提で書いています。
これが、一対多で対応させているようでしたら、
上記のマクロでは出来ませんので、大幅な書換えが必要です。
「何が何処にあるか」
ということと、
「どれとどれが対応するのか」
という具体的な詳細についての洩れの無い補足が必要です。
以上です。
つたない説明で、汲み取ってくださり、ありがとうございます!
どうしていいのやら状態だったので本当に助かりました。
補足部分を最初からいえばよかったですね。
無事解決できて、感謝ばかりです!
No.2
- 回答日時:
ありがとうございます。
INDIRECT関数、今回初めて使いましたが、便利な機能ですね。
私がやった方法とは違う方法でしたので勉強になりました!
No.4
- 回答日時:
#1です。
訂正があります。誤)
ダヌルクオート
正)
ダブルクオート
誤)2か所
> 手順3■VBAの編集画面が現れたら、そもまま、[Ctrl]+[V]キーを押して、
> 上記にコードを貼り付ける。
正)
手順3■VBAの編集画面が現れたら、そのまま、[Ctrl]+[V]キーを押して、
修正済の上記スクリプトを貼り付ける。
タイプミス2点、編集ミス2点、以上訂正をお願いします。
なお、私の回答は、
[種類]入力セル、[商品分類]入力セルの[入力規則][リスト]の連動
については既に問題なく設定されている、という前提で、
添付画像にある一文、
【「種類」を再選択すると「商品分類」が連動して空白になるようにしたいです。】
に対して、お応えしたものですので。
以上、訂正と追加説明です。訂正の件、失礼しました。
丁寧に訂正ありがとうございます。
意味が通じていたので、全く気にならなかったです。
(大きな支障がなければ、気にならないタイプなので)
無事できるようになり、本当に感謝ばかりです。
No.5
- 回答日時:
ひょっとしたら選んだ先のリストがないのではないですか?
例えば果物を選んだ場合は果物だけのリストが要ります。
果物>オレンジ、イチゴ、パイナップル
といった具合に。
また表があっても、果物のリストが「名前を定義する」等でリストの名前を定義していない場合、
最初のドロップリストで果物を選択しても、その先が出てこないようです。
例で具体的に言うと、
果物、野菜、炭水化物、タンパク質の全てのリストが名前定義されている必要があるようです。
野菜のリストが名前定義されていると、「野菜」という文字列と同じリスト名が参照され、
その野菜のリスト項目が2番目のドロップダウンリストに出てきます。
ひょっとしたら的外れかもしれません。その場合はスルーして下さい。
参考ページを以下に。「Excel 連動リスト」で検索しました。
http://www.use-eng.co.jp/mt_use/2008/04/post_292 …
名前の定義は「数式」タブより「名前の定義」か「選択範囲から作成」を使って下さい。
選択範囲から作る場合は項目名から選択しないと、デフォルトで一番上の項目がリスト名になってしまいます。
No.6
- 回答日時:
商品分類を削除するように連動させるにはVBAを使うしかありませんが、
条件付き書式で、エラーであるとわかるように背景を赤くしたり、
文字を白くしたりして、再選択を促すようにするといいかもしれませんね
G163セルに条件付き書式
[数式が] =ISNA(MATCH($G$163,INDIRECT($C$163),0))
[書式]を設定する
そんな方法があるのですね!
私に変更の依頼をしてきた人の要望がかなえられたので、今回は使用しませんでしたが、
この方法は他で使いたいと思います。
教えてくださり、ありがとうございます!
No.7
- 回答日時:
#1、4です。
#4への補足、拝見しました。添付画像、解り易いですね。
エラーの原因は結合セルであることを想定していなかった点です。
VBAにとって結合セルは鬼門のボスキャラ的存在です。
ただ、このケースでは、問題を適切に解消出来ます。
エラーになっている
c.Offset(0, 3).ClearContents
の一行を、以下の記述に差し換えてください。
c.Offset(0, 2).MergeArea.ClearContents
.Offset(0, 2)に書き換えるのは、
起点となるセルcが結合セルである為に、右端セルに機転が移り、
補足欄の添付画像で言えば、
E163から右に2つズレた位置にあるG163を指定する意味で、
.MergeAreaを追加することで、より確実に
G163:I163の結合セルを捉えるようにします。
上記のスクリプト書換えによって、当座のエラーは解消されます。
> 種類]入力セル、[商品分類]入力セルの[入力規則][リスト]の連動
> については問題なく設定されております。
了解済でしたが、ご確認、ありがとうございます。
> 同じエラーについて、cj_moverさんが他の質問者に答えていましたので
> 拝見したのですが、難しく私には手におえそうにありませんでした。
実行時エラー '1004' というエラーコードは、
多数のエラー内容に付けられる番号ですし、原因も多種多彩です。
ですので、今回の件とはあまり関係ないのです。
> このエクセルファイルは私が作成したものではなく
人が作ったものに手を入れるのは大変ですね。頑張ってください。
> なお、プルダウンリストは、
> A1からD1まで名前の定義をしており、
> A1からD5までは「選択範囲から作成」で保存してあります。
ここまでの私が担っている事象については、この部分は関係なさそう、
と思っています。
以上です。
すごい!出来ました!!!!!!
ありがとうございます!
VBAの世界にもボスキャラがいるんですね。
あまりに凝ったつくりをしているエクセルで
今まで誰も手を付けていなかったそうですが、あれもこれもと要望が出てきて、
このところこのエクセルへの対応に振り回されています。
(まさかVBAなるものを使うようになるとは)
全く分からない私にも丁寧なご指導、本当にありがとうございました!
助かりましたー!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) Excelのプルダウンメニューの内容を人によって可変する方法 2 2023/03/28 14:52
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) エクセルで値ではなく関数を参照する方法 6 2023/03/19 00:50
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAユーザーフォームのチェックボックスについて
Excel(エクセル)
-
VBAでオブジェクトがありません、となってしまう
Visual Basic(VBA)
-
VBA/Worksheet_Changeがうまくいかない
PowerPoint(パワーポイント)
-
-
4
Excelのマクロ名の並び順の法則は?
Excel(エクセル)
-
5
VBAのオートフィルについて
Visual Basic(VBA)
-
6
ユーザーフォーム スクロールバー 非表示にしたい
Excel(エクセル)
-
7
クイックアクセスツールバーに登録されたマクロについて
Excel(エクセル)
-
8
Excel VBA 2次元配列を使った具体サンプル
その他(Microsoft Office)
-
9
セルをクリックすると付箋のようなものが表示されるのだが。
Excel(エクセル)
-
10
エクセル数式・等間隔ごとの範囲にしたい(再)
Excel(エクセル)
-
11
【エクセル】文字列のマッチング検索のVBA
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報
丁寧にありがとうございます!
誤字などに関しては、意味が通じていたので全く気になりませんでした。
[種類]入力セル、[商品分類]入力セルの[入力規則][リスト]の連動
については問題なく設定されております。
さっそく試してみたのですが、エラーがでてうまくいきませんでした。
同じエラーについて、cj_moverさんが他の質問者に答えていましたので
拝見したのですが、難しく私には手におえそうにありませんでした。
このエクセルファイルは私が作成したものではなく
複数のシートと連携しているようですが、
このシートのこの部分に関しては、いじっても大丈夫な部分とみて
他の方に修正をお願いされている状態です。
なお、プルダウンリストは、
A1からD1まで名前の定義をしており、
A1からD5までは「選択範囲から作成」で保存してあります。
よろしくお願いいたします。