「QNo.2687724」の質問補足です。
ドロップダウンリストが表示されなくなる原因に心当たりがありました。入力規則を設定するときに、「元の値はエラーと判断されます。続けますか?」とメッセージがでていたのです。
Sheet1を売上帳、Sheet2を得意先リストにし、売上帳の「A1」に得意先の頭の文字を入力、「B1」に「入力規則」の「リスト」で「元の値」に「=INDIRECT(A1)]と入力しました。
エラーと判断される「元の値」というのは、Sheet2 の得意先リストのことなのでしょうか?
Sheet2 の得意先リストは、縮小表示するとこのような形で名前の定義をしています。
A B C D E F G H I
あ か さ た な は ま や ら ←50行
い き し ち に ひ み ゆ り ←30行
う く す つ ぬ ふ む よ る ←30行
え け せ て ね へ め れ ←30行
お こ そ と の ほ も わ ろ ←30行
つまり、「あ」の得意先は、50セル、「い」は30セル入力できるようにしました。
この方法で、どこかエラーになる原因あるのでしょうか?
「QNo.2687724」の質問に補足を付けたかったのですが、できないようなので、新規質問にさせていただきました。又、Excel のバージョンは2002ではなく、2003でした。
せっかくここまできたのに、このままでは使えないと言われてしまい解決を急いでおります。アドバイスを宜しくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんにちは。
Wendy02です。#2の返事を待たずに、今、時間が取れたので、入力規則が現れなくなる原因の問題に対処した、マクロを作ってしまいました。
>QNo.2677035 /Excel2002 で売上帳を作成しました。
>得意先名が250件を超え、得意先名の番号を捜すのが大変だと言われてしまい
入力するシートのシートタブ(下方)のところを右クリックして、「コードの表示」で、以下を貼り付けてください。DATAAREA のところは、Sheet2のA1 が、データリストの左端上にあるなら、そのままで結構ですが、必ず、一度「得意先の入ったデータリスト」を開けてください。その得意先のデータリストは、別に、並べてなくても良いです。離れたところにない限りは、すべて拾ってくれます。
ただし、これは、今までのものとは必ずしも同じではありません。
また、便利かどうかは、今の方法が良いかは分かりません。
たとえば、"野村会社" を探す場合は、「村」でも「野」でも、その中にある漢字を一字、A列に入れれば、B列の入力規則側に現れます。しかし、逆に、"会社"という言葉があれば、会社と入っているものが全部リストされてしまいます。その点に違いがあります。
また、単語が見つからないと、そのまま、B列の隣のセルにその文字が写されます。
この入力規則は、A列に検索語を入れたセルに対してのみ現れるもので、隣のB列にはひとつしかありません。これは、(書式や入力規則表示に対する)メモリ負担にならないように考えたものです。
なお、これは試作段階のもので、実用になるかは、調整が必要かもしれません。当初、私が「QNo.2677035」でイメージしていたものとは違ってしまっていますが、前のスタイルか、まったく別のものに変えることも可能です。
それから、もしも、反応しなくなったら、Alt + F8 から、「データ更新」というタイトルを探して、クリックすれば、復活します。
'シートモジュール設定
'-----------------------------------------------------------------
'Option Explicit
Private myData() As Variant
Const DATAAREA As String = "Sheet2!A1" '間に空白のない範囲は、左端上のひとつのセル
'解説:Ctrl +Shift + End で括られるデータのある範囲
'Ver.2690474.01
Const INPUTCOL As Integer = 1 '検索語を入れる列
Private Sub MakingList()
Dim i As Long
Dim myRange As Range
Dim buf As Variant
Dim c As Variant
If InStr(DATAAREA, "!") > 0 Then
buf = Split(DATAAREA, "!")
Set myRange = Worksheets(buf(0)).Range(buf(1))
ElseIf InStr(DATAAREA, ".") > 0 Then
buf = Split(DATAAREA, ".")
Set myRange = Worksheets(buf(0)).Range(buf(1))
End If
If InStr(DATAAREA, ":") = 0 Then
Set myRange = myRange.CurrentRegion
End If
Erase myData
For Each c In myRange
ReDim Preserve myData(i)
myData(i) = c.Value
i = i + 1
Next c
End Sub
Private Sub Worksheet_Activate()
Call データ更新
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myList As String
Dim c As Range
If Target.Column <> INPUTCOL Then Exit Sub 'A列
If Target.Count > 1 Then Exit Sub
If Target.Value <> "" Then
EnterValidationList Target.Value, myList
Else
Exit Sub
End If
Application.EnableEvents = False
If myList = "" Then Target.Offset(, 1).Value = Target.Value: GoTo Quit
On Error Resume Next
For Each c In Cells.SpecialCells(xlCellTypeAllValidation)
c.Value = c.Value
c.Validation.Delete
Next c
On Error GoTo 0
On Error GoTo Quit
With Target.Offset(, 1).Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=myList
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
Target.Offset(, 1).Select
Quit:
Application.EnableEvents = True
End Sub
Sub EnterValidationList(Matchwd As String, myList As String)
'変更の余地があります。
Dim Dummy As Variant
Dim ar As Variant
On Error GoTo ErrHandler
Dummy = UBound(myData)
Dummy = Empty
ar = Filter(myData, Matchwd)
On Error Resume Next
Dummy = ar(0)
If Dummy <> Empty Then
myList = Join(ar, ",")
End If
On Error GoTo 0
Exit Sub
ErrHandler:
Call MakingList
Resume
End Sub
Sub データ更新()
'動かなくなった時もこれを使う
Application.EnableEvents = True
MakingList
End Sub
この回答への補足
Wendy02 さん、マクロも作れるなんてすごいですねぇ。
折角マクロを作ってくださったですが、私には使い方がよくわからず、申し訳ありません。「コードの表示」に貼り付けるのは、「'シートモジュール設定」以下全てで宜しいのでしょうか?又、名前の定義や、入力規則の設定はクリアするのでしょうか?
得意先リストは、以前はA列は番号、B列は得意先名、C列はフリガナを入力してあったのですが、入力規則を使うために QNo.2690474 のように並べ変えました。新規の得意先を増やせるように空白をたくさん入れてあるので、うまく作動しないのかもしれません。
No.6
- 回答日時:
1)、2)、3)、4)すべてできると思いますよ。
試していませんが。名前定義は、シートが変わってもブックが変わらない限り働きます。
名前をつけた後で、シート名を変更しても対応してくれます。
エクセルの「挿入」-「名前」-「定義」に保存されています。ここで、削除したり、セル範囲を変更したりできます。一度いろんなことをお試しください。駄目なら削除すればいいのですから。
INDIRECT関数は文字を取得する関数ですね。
=INDIRECT(A1) とは =INDIRECT(あ)
=INDIRECT(A2) とは =INDIRECT(い) のことですね。
このことを理解できたら、縦だろうが横だろうが大丈夫だと思います。
sannri さん、度々アドバイスありがとうございます。
自分なりに直してみたのですが、これでいいのか心配だったので、sannri さんにコメントをいただいて安心しました。
どうもありがとうございました。<(_ _)>
No.5
- 回答日時:
名前Boxの名前のつけ方に問題があると思います。
最初は「A1~A5」までを選択して、たとえば「五十音」と名前をつけます。
続いて、「B1~H1」までを選択して、「あ」と付けます。(ここが大事です)つまり「A1~A5」までに使われている「文字」を「名前」に使わなければならないのです。これで最初につけた名前と後につけた名前が関連されます。
「B2~H2」には、「い」と名前をつけなければならないのです。
ぼけていたらごめんなさい。
この回答への補足
できました。\(^o^)/\(^o^)/\(^o^)/
見ず知らずの他人のために、寝る時間も割いてここまで親身になってご指導くださるなんて、本当に感謝しております。<(_ _)>
>最初は「A1~A5」までを選択して、たとえば「五十音」と名前をつけます。
>4続いて、「B1~H1」までを選択して、「あ」と付けます。(ここが大事です)つまり「A1~A5」までに使われている「文字」を「名前」に使わなければならないのです。
取り合えず、得意先リストの一部を教えていただいたとおりに直してを作り直しました。[Sheet1]にコードを全て貼り付けたら、できました。\(^o^)/
申し訳ありませんが、もう少し教えてください。<(_ _)>
1)質問では[Sheet2]と書いていたのですが、実際は[得意先]というシート名にしていました。他の人が見て[得意先]シートだとすぐわかるようにしたいのですが、シートの名前の変更は可能でしょうか?
2)[Sheet2]の得意先名を並べ変えたいのですが、行に「五十音」、列に「客先名」を入れるようにしたらダメでしょうか?
3)又、客先名の行と列は、どの程度まで増やせますか?
もう1つ、すみません。(^^;
4)以前は、A列は番号、B列は得意先名、C列はフリガナの得意先シートを使用していたのですが、これを利用することはできませでしょうか?
No.4
- 回答日時:
こんばんは。
Wendy02です。>マクロも作れるなんてすごいですねぇ
私は、ここの掲示板ではマクロが専門です。関数は、みなさん出来ますからね。
ともかく、私は、マクロでも、関数でも、その方法は問わずに、これが完結するまでは、乗りかかった船として、可能な限りは、なんとか、ご要望にあわせてみたいと思います。(出来るだけ早くですが……)
本来は、ダイアログボックスのようなものをつけるのがよいのかもしれませんが、それは、出来合いで提供するなら良いけれど、マクロをやったことがない人には、ちょっと面倒です。
当初、入力補完が出来れば、と考えています。つまり、何かを入れると、候補が出てくるようなスタイルに持っていきたかったのですが、どうしても思いつきません。それで、今のスタイルの方法も悪くはないと思い、アイデアだけ利用させていただくことにしました。
>「'シートモジュール設定」以下全てで宜しいのでしょうか?又、名前の定義や、入力規則の設定はクリアするのでしょうか?
「全て」です。他に入れる必要のないものを考えました。
「名前の定義」も「入力規則」もワークシートからは触る必要はありませんが、「入力規則の設定」は、自動的にたったひとつになってしまいます。
>A列は番号
の代わりに、文字を入れることにするわけですね。
>新規の得意先を増やせるように空白をたくさん入れてあるので、
>A1:AE170
それは、ちょっと変えなくてはならないようですね。ちょっと私は、うかつでした。
それと、「A1:AE170」の範囲を設定しますと、入力規則のためのセルの数が、5,270個となります。それをINDIRECT関数で任せるには、負担が大きすぎるのではないか、と思います。現状のマクロでも、5,270個分をそのまま検索させたら、遅くなるかもしれません。しかし、それは直せます。
ただ、とりあえず、バックアップを取っていただいて、今のを試してみていただいてもよいかと思います。その後で、他に不具合や要望を取り入れて、調整します。
A列に、取引先の名前の一文字(漢字であれば漢字)を入れてていただければよいのです。今の段階では、Sheet2 のデータの並びはまったく関係ありません。ぽっかりと、丸々一列の間が空かない限りは、どのように並べていただいてもよいです。
この回答への補足
Wendy02 さん、こんばんは!
今朝、出勤前でバタバタしていて、コメントを付ける場所を間違えてしまったようです。申し訳ありません。
Wendy02 さんが作ってくださったマクロを解読しようとプリントしてにらめってしていたのですが殆ど理解できず、Wendy02 さんの説明をヒントに自分でわかる範囲で自分の売上帳に合うように直してみました。
>Const DATAAREA As String = "Sheet2!A1" '間に空白のない範囲は、左端上のひとつのセル
"Sheet2!A1" ⇒ "得意先!A1"に変更(得意先という名前にしてある)
>Const INPUTCOL As Integer = 1 '検索語を入れる列
= 1 ⇒ = 3 (検索後の入力は、C列になる)
得意先シートは、得意先名の他に、ふりがなや分類などがあったので、ふりがなや分類を削除し、得意先名だけにしました。
また、A2:AS1 に「あ」「い」・・・「わ」と頭の文字を入れ、A列は、「NO」と名前を付け、番号を入れました。
お陰さまで、売上帳で自分がやりたかったことを叶えることができました。検索文字もひらがなだけでなく漢字でも入力できるため、ドロップダウンリストで表示される候補も絞られ、また、頭の文字でなく、名前に含まれる文字で検索できるようになった為、「(株)」がつく会社名でも、2番目の文字でも検索できるようになり、自分が希望していた以上のものができあがり、満足しております。
Wendy02 さんには、本当に感謝しております。どうもありがとうございました。<(_ _)>
予想以上の便利なものができて嬉しくって舞い上がってしまい、得意先以外の部分をちゃんと確認していませんでした。
実は、得意先シートとは別に、分類・品名・担当者などの「リスト」シートを作成し、入力規則を使っていたのですが、それが全てクリアされてしまいます。
マクロの中の「Validation」が入力規則のことだということだけはわかったので「c.Validation.Delete」を削除すればいいのかと試してみたのですが、そんな簡単なものではないのですね。どう変更したら他のリストがクリアされなくなるのかわからず昨日から悩んでおります。
申し訳ありませんが、アドバイスを宜しくお願いいたします。
No.2
- 回答日時:
こんにちは。
Wendy02です。ドロップダウンリストの範囲を教えてください。
その状況は、ある程度、おぼろげながら想像はついています。ドロップダウンリストは、ひとつだけではありませんね。実験的には、ひとつなのでしょうけれど、実務上は違うわけですね。そこには、少し無理があるのです。ドロップダウンとして設定されたセルの抱えるセルの範囲の数が、論理的な限界を越えているのではないか、というように考えています。
お急ぎでなければ、こちらで、前々のご質問の時から、さかのぼって、私のほうで立て直してみたいと思っています。今、私の覚えている限りですと、会社の登録数が増えたので、頭文字でピックアップで、その場所に入力できれば、と考えていたかと思います。それで、入力規則でのドロップダウンのリストには、少し無理があるのではないか、と思います。
この回答への補足
度々コメントありがとうございます。
得意先名のリストは、「A1:AE170」まであります。
下は、縮小表示をした時に表示される定義した名前の位置です。
A B C D E F G H I
あ か さ た な は ま や ら ←50行
い き し ち に ひ み ゆ り ←30行
う く す つ ぬ ふ む よ る ←30行
え け せ て ね へ め れ ←30行
お こ そ と の ほ も わ ろ ←30行
頭が「あ」のセルが50、「い」=30、「う」=30、「え」=30、「お」=30、合計170行あります。
これからも得意先名が増えるので余裕を持って空白を多めに入れました。
「得意先」のシートのほかに、「リスト」のシートに「担当者」「品名」「分類」・・・等のリストも作成しています。
「得意先」を他のブックにすれば多少負担がへるのではないかと思い、別のブックから参照するようにしてみましたが、やはりダメでした。
でも、ここまで来て諦めきれないので、もう少し時間をもらえるよう上司に頼んできたところです。
No.1
- 回答日時:
こんばんは。
たぶん、おやりになりたいことは、
Sheet2 のA1:A5 を選択。
挿入-名前-登録 で、
「項目」 (任意)
次に、
Sheet2 のA1:I5 まで選択しておいて、
挿入-名前-作成 で、
□左端行 にチェック
Sheet1 に戻って、
B1 にセルポインタを置き、
データ-入力規則-リストで、
=INDIRECT("Sheet2!"&A1)
A1 に、「あ」と入れれば、B1 のドロップダウン・リストには、「あかさたなはまやら」が出てきます。(ただ、本来は、縦に扱ったほうがよいです。横は、勝手が良くありません。その場合は、名前-登録で、「A1:I1」 に項目。名前-作成で「上端行」にチェックにします)
ただ、前々から、私もマクロで考えていましたが、結局、手間が多くなるので、そのままになってしまいました。
この回答への補足
もう、回答がつかないのではないかと諦めかけていたので、今朝、Wendy02 さんの回答を拝見してとても嬉しかったです。ありがとうございます。出勤前で時間がないので、作り直して帰宅後、ご報告させていただきます。
補足日時:2007/01/24 06:53ご報告が遅くなってしまい申し訳ありません。
昨夜、教えていただいた方法で作り直してみました。最初は順調に入力でき喜んでいたのですが、やはり、暫く入力すると、ドロップダウンリスト「▼」が表示されなくなってしまいました。今朝、もう一度試してみたのですが、残念ながらやはり同じ状況です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) Excel ドロップダウンリスト(入力規則)に関してです データの入力規則で元データ79000行のド 3 2023/07/17 10:06
- Excel(エクセル) エクセルで値ではなく関数を参照する方法 6 2023/03/19 00:50
- Excel(エクセル) 別シートの表の値を参照したい 2 2022/03/30 15:11
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) DATEVALUE関数がエラーになる 2 2022/07/12 19:30
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
【大喜利】【投稿~12/6】 西暦2100年、小学生のなりたい職業ランキング
【お題】 ・西暦2100年の「小学生のなりたい職業ランキング」で1位になった職業は何か教えてください
-
エクセル indirectリスト表示されない
Excel(エクセル)
-
エクセル、 名前の定義に関数を使用すると参照できない
Excel(エクセル)
-
Excel VBA:エクセルのマクロで入力規則を設定する際のアラートの扱いがわからず困っています
Visual Basic(VBA)
-
-
4
INDIRECT関数のエラー回避について
Excel(エクセル)
-
5
Excelで入力規則が反映されない。
Excel(エクセル)
-
6
Excel 条件によって入力禁止にする
Excel(エクセル)
-
7
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
8
エクセルで運賃検索表を作りたいのですが・・・
Excel(エクセル)
-
9
(Excel)エクセルのバージョンごとの使用可能関数リストがあるサイト
Excel(エクセル)
-
10
エクセルでセルにポインタすると表示されるコメントみたいなもの
Excel(エクセル)
-
11
Excel(エクセル) 名前定義をしたリストから、indirect関数を利用して選択入力できるようにしたいのですが…
Excel(エクセル)
-
12
UserForm1.Showでエラーになります。
工学
-
13
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
14
VBAで入力規則 エラーでも入れたい
その他(Microsoft Office)
-
15
Excelで、あるセルの値に応じて行を自動挿入したい
Visual Basic(VBA)
-
16
【Excel】ドロップダウンリストの昇順、昇順
Excel(エクセル)
-
17
Excelについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/6】 西暦2100年、小学生のなりたい職業ランキング
- ・ちょっと先の未来クイズ第5問
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】関数で「A1が0でな...
-
エクセルでセルにポインタする...
-
シートを保護しても入力規則を...
-
エクセルでセルのコメントが消...
-
エクセルVBA ブックを閉じる前...
-
カンマで区切った数値をCOU...
-
円の面積の求め方
-
入力規則の入力時メッセージの...
-
エクセルで、入力できる箇所を...
-
エクセルで負数の最大値を求めたい
-
フォーム入力で入力規則を設定...
-
エクセルの入力規則で作ったリ...
-
エクセルで作業セルを切り取る...
-
エクセルで、セルをクリックす...
-
エクセルで電話番号から市内局...
-
Excelで同じセルに入力し エン...
-
【Excel】ドロップダウンリスト...
-
エクセルで、入力制限(プルダ...
-
エクセルで入力規則が崩れてし...
-
エクセルデータの入力規則リス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【エクセル】関数で「A1が0でな...
-
エクセルでセルにポインタする...
-
エクセルVBA ブックを閉じる前...
-
エクセルでセルのコメントが消...
-
シートを保護しても入力規則を...
-
エクセル 入力規則のリストボ...
-
入力規則の入力時メッセージの...
-
エクセルの入力規則で作ったリ...
-
カンマで区切った数値をCOU...
-
エクセル逆三角マークで選択項...
-
【Excel】ドロップダウンリスト...
-
エクセルで、入力できる箇所を...
-
エクセルで、入力制限(プルダ...
-
エクセルで電話番号から市内局...
-
エクセルで。
-
Excel 自動的に半角英数になり...
-
エクセルのセルの手入力を禁止。
-
エクセルで負数の最大値を求めたい
-
フォーム入力で入力規則を設定...
-
ドロップダウンリスト(INDIREC...
おすすめ情報