• ベストアンサー

エクセルで他のBookのデータを入力規則のリストに…

KenKen_SPの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。KenKen_SP です。 下記の VBA コードで一応ですが、実現できました。 しかし、コードのコメントにも書いておきましたが、入力規則のリストで セル範囲を指定するのではなく、値指定できる長さには制限があるみたい です。あまり長いリストは設定できません。 ですから、”一応”になってしまうのですが、、、 例外処理もいくつか含めておきましたので、参考にはなるかもしれません。 下記コードを標準モジュールにコピー&ペーストして下さい。 Sub Auto_Open()   Call SetValidation End Sub Sub SetValidation()   Dim Buf   As Variant   Dim WB    As Workbook   Dim aryDat() As String   Dim strDat  As String   Dim strMes  As String   Dim i    As Long   Const DatBookName As String = "Book1.xls"   Const DatRangName As String = "データ"        On Error Resume Next   'ダミーアクセスでブックの状態をチェック   Workbooks(DatBookName).Activate   If Err.Number > 0 Then     'エラー発生ならブックを開く     Err.Clear     Application.ScreenUpdating = False     Workbooks.Open Filename:=ThisWorkbook.Path & "\" & DatBookName     If Err.Number > 0 Then       strMes = "参照先ブック:" & DatBookName & "が見つかりません"       GoTo ErrorHandler     End If   End If   Err.Clear      '名前「データ」の値を配列にバッファ   Set WB = Workbooks(DatBookName)   Buf = WB.Names("データ").RefersToRange.Value   If Err.Number > 0 Then     strMes = "名前:" & DatRangName & " が定義されてません"     GoTo ErrorHandler   End If   WB.Close   On Error GoTo 0      '一次元配列に格納し直して、さらに文字列で連結(汗)   ReDim aryDat(UBound(Buf) - 1)   For i = 0 To UBound(Buf) - 1     aryDat(i) = Buf(i + 1, 1)   Next i   strDat = Join$(aryDat, ",")      'シート1のA列に入力規則を設定   With ThisWorkbook.Sheets("Sheet1").Columns(1).Validation     .Delete     '次行でリストを設定するのですが、、     '配列を受け付けないので、カンマ区切りの文字列で設定しています。     'リストが大きすぎるとエラーになりますので注意。     .Add Type:=xlValidateList, Formula1:=strDat     .IgnoreBlank = True  '空白値の入力を許可     .InCellDropdown = True 'ドロップダウンリスト表示   End With Terminate:   Set WB = Nothing   Exit Sub ErrorHandler:   Application.ScreenUpdating = True   MsgBox strMes, vbCritical   GoTo Terminate End Sub

gogogo000
質問者

補足

KenKen_SP様; おはようございます。ご丁寧なご回答をいただきありがとうございます。 やはりVBAを使わなければ無理ですか…。 今回,元の値となるデータは,13列分,1列あたり50~60種類,1リストは短くても10文字程度から最長で80文字程度の文字列です。このデータを100個ほどのExcelファイル(Book)で使いたく質問させていただきました。 またデータ(リスト)は頻繁に更新されます。 自分がやろうとしていることは,ExcelではなくAccessでやるべきことなのでしょうか!?

関連するQ&A

  • Excelのセルをリストから入力

    Excel2000ユーザーです。 任意のセルをリストからデータ入力(選択)するように設定した場合、リストに含まれない値を入力する方法はありますか? ■現状 [データ]→[入力規則]で入力規則プロパティ画面を表示し、 「入力規則の種類」:リスト 「元の値」:リストに含めるデータ 「ドロップダウンメニューから選択する」にチェック と設定しています。

  • エクセルのドロップダウンリスト

    入力規則のドロップダウンリストですが、次のような使い方は可能でしょうか?また可能なら方法を教えて頂けませんか?よろしくお願いします。 A、B列にドロップダウンリストを設定し、A列のリストに値を複数設定し、B列のリストの値をA列の値によって変化させたいのですが・・・。各列とも、複数行にわたってドロップダウンリストを設定しています。

  • エクセル データの入力規則

    XPでエクセル2007を使っています。 会社名の列、売上の列、差額の列、請求額の列・・・というシートAがあって、別シートにある印刷書面(左上に~会社 御中)において「データ入力規則」でリストを選択し「元の値」欄にシートAの会社名列を範囲指定して入れると会社名がドロップダウンリストになります。でもこれはお客様に送付する印刷書面なので、「~会社 御中」と「御中」を付けたいのです。会社名は長い文字数と短い文字数がありバラバラなので、印刷書面の適当な欄に御中と入力しておくと、社名との間が空き過ぎたり逆に会社名が入りきらなかったりしてしまいます。シートAであらかじめ「~会社 御中」という列を作り、それをリストで「元の値」にしてしまえば解決するのかも知れませんが、シートAの会社名の列はそのままで、入力規則で選んだら「御中」が付く様な方法はないでしょうか?

  • EXCELのデータの入力規則について

    EXCELのデータの入力規則の設定で入力をドロップダウンリストから選択するようにしたのですが、ドロップダウンリストの文字が小さく、大きくしたいのですができません。アドバイス宜しくお願い致します。

  • Excelで入力規則が反映されない。

    Excel2007でシートBに「123」と名前のついたリストを作り、シートAに入力規則を設定しましたが、リストにない値を入れてもエラーになりません。 シートBのリストは、  名前:123  参照範囲:シートB!$B$1:$B$171 範囲:シートA 条件設定:入力値の種類=リスト      元の値=「=123」      ドロップダウンリストから選択する=チェック済 エラーメッセージ:表示するにチェック済          スタイル=停止 他のファイルでは出来ていて、それとまったく同じにしているつもりなのですが・・・。 ドロップダウンリストは表示され、そこから選ぶことは可能ですが、まったく関係ない値も普通に入力できてしまいます。 初歩的なことでしたらお手数掛けて申し訳ありませんが、よろしくお願いします。

  • Excelの入力規則について

    Excelの入力規則について教えてください。 A1:A20に入力規則を設定します。 入力値の種類にリストを選び、元の位置で、北海道、青森、岩手、山形・・・と都道府県名を20件ほど入力し、設定が完了したとします。 A1セルでドロップダウンして、岩手を選び、次のA2のセルでドロップダウンした時、岩手をリストから消しておきたいのです。 つまり、リストから選んだものは、次のセルでドロップダウンした時、常に消えておくことができるように設定したいのですが、良い方法はありませんか?

  • Excel2007 入力規則の元の値の設定方法

    こんばんは。 OSはVISTA、Excel2007を使っています。 今作業中のBookは、Sheet1とSheet2から構成されています。 Sheet2のA列の1行目にアメリカ、2行目にイギリス、3行目に中国、4行目にオランダと入力しています。 Sheet1のA列にSheet2のA列1行目から4行目(アメリカからオランダ)までをデータ入力規則機能を使って選択したいと思い、次の操作を行いました。 Sheet1のA1を選択。 【データ】→【データの入力規則】→【リスト】→【元の値】 ここで、【元の値】としてSheet2のA列1行目から4行目を選択するために、Sheet2にカーソルを移動させようとしたのですが、Sheet2にカーソルを移動できませんでした。 仕方なく、【元の値】にベタ打ちで「=Sheet2!$A$1:$A$4」と入力したのですが、カーソルでSheetをまたいで【元の値】となるセルを選択することはできないのでしょうか。 (上の例ではSheet1のA1セルのリストの元の値を Sheet2から選択する。) ご教示の程、よろしくお願いいたします。

  • データーの入力規則で

    エクセルにてデーターの入力規則を設定してますが 下記のようなエラーが出てきてしまいます。 どうしたらよいのでしょうか? 区切り文字でとありますが カンマで区切ってますが 元の値を参照してくれません。 区切り文字が違うのでしょうか? ちなみに元の値は「○○,△△,□□」と3つを区切ったものです。 『リストの元の値は、区切り文字で区切られたリストか、 または単一の行または列の参照でなければなりません。』 よろしくお願いいたします。

  • Excel 入力規則のリストについて

    入力を簡略化するため、入力規則からドロップダウンリストを作成しました しかし小さくて選びにくい・・・(それでも簡略化はできてます) ▽を押すと、大きいリストが出るようにできないでしょうか?

  • [Excel2000]セルの入力規則→リストのセルから出るドロップダウンリストが小さ過ぎなのは?

    エクセル2000での質問です。 [ツールバー]→[データ]→[入力規則]→[リスト]のセルから出るドロップダウンリストが 小さ過ぎるのはなぜでしょう? 入力規則を設定したセルも、設定時の元の値のセルでも書式を変更してみたのですが、 ドロップダウンリストは大変小さく変更されません。 ドロップダウンリストの書式(フォントサイズ)を変更する方法をご存知の方が おられましたらどうぞご教授ください。 お願いいたします。