• 締切済み

VBA セルにドロップダウンリスト 作成

Access VBAについてお尋ねいたします。 Access VBA にてExcelファイルを操作するプログラムを作成しています。 Excelの指定した範囲のセルにドロップダウンリストを作成しようとしてコードを入力したらエラーが発生しました。 エラー内容:実行時エラー'1004'アプリケーション定義かオブジェクト定義エラーです エラーとなった処理コード Dim Exf as string Dim AppObj As Object 'Excel.Applicationオブジェクトの宣言 Dim WBObj As Object 'Excel.Workbookオブジェクトの宣言 Dim WsObj As Object 'Excel.WorkSheetオブジェクトの宣言 '実行時バインディング Set AppObj = CreateObject("Excel.Application") '編集を実施するワークブックを開く Set WBObj = AppObj.WorkBooks.Open(Path & Exf) '編集を実施するワークシートを設定する Set WsObj = WBObj.Worksheets(1) 'Excelアプリケーションを表示する AppObj.Visible = True col = 5:Count(i) = 15 '2行目からデータが存在する最後の行までドロップダウンリストを作成する With WsObj.Range(WsObj.cells(2, Col), WsObj.cells(Count(i) + 1, Col)).Validation .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Formula1:=Join(Li, ",") End With 処理の解説 1:Accessと同じファイルパス内のExcelファイルを開く 2:先頭のシートにて処理を実行する 3:E列の2行目からデータがある最後の行までをドロップダウンリスト化する 4:ドロップダウンリストにするデータは各Excelファイルの先頭から2番目のシートのA列にデータがあり、Liという配列に格納してあります。 ※A列のデータの範囲【行数】が処理するたびに異なるため、Liという配列を使用し、配列の全データをドロップダウンリスト化するという方法を採用いたしました。 エラーの修正方法がお分かりの方がいらっしゃいましたら回答のほどよろしくお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1です。 下記でテストで、動きました。質問と変えているところがありますが、まあ、やってみて、その後、自分の内容になるよう、少々修正を考えてください。 Sub test01() Dim Exf As String Dim AppObj As Object 'Excel.Applicationオブジェクトの宣言 Dim WBObj As Object 'Excel.Workbookオブジェクトの宣言 Dim WsObj As Object 'Excel.WorkSheetオブジェクトの宣言 Dim l As Variant '実行時バインディング Set AppObj = CreateObject("Excel.Application") '編集を実施するワークブックを開く Set WBObj = AppObj.WorkBooks.Add 'Open(Path & Exf) '編集を実施するワークシートを設定する Set WsObj = WBObj.Worksheets(1) 'Excelアプリケーションを表示する AppObj.Visible = True Col = 5: Cnt = 15 '2行目からデータが存在する最後の行までドロップダウンリストを作成する Dim MyList(3) As String MyList(0) = "東京" MyList(1) = "大阪" MyList(2) = "福岡" MyList(3) = "仙台" '--- With WsObj.Range(WsObj.Cells(2, Col), WsObj.Cells(Cnt + 1, Col)).Validation .Add Type:=3, Operator:=1, Formula1:=Join(MyList, ",") End With End Sub ーー xl定数については、「エクセルVBA」(<--エクセルですよ)で下記を実行し、その示す具体的な数値を知り、そちらを使うことで逃げました。 正しいやり方、別のやり方は、昔に解説記事を読んだ記憶があるのですが、忘れました。他の回答者が、この点を、いつ答えてくれるかわからないので、とりあえず、上記でやってはどうかな。 Sub test02() MsgBox xlValidateList '-->3 End Sub Sub test02() MsgBox xlBetween '-->1 End Sub ーー 上記は、」ブックは新規ブックでやりました。 Exf でやるなら修正してください。 リストの内容も普通は、エクセルでは、セル範囲のデータを指定するのが標準です。上記はプログラム内で定義.議論はあろうかと思うが、さらに、むつかしい点を抱え込むと思う。 >2行目からデータが存在する最後の行までドロップダウンリストを作成する はおかしい表現と思うが?? 現状はデータのないセルに入力規則を設定するものだろう??

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

・Path & Exf が定義されてない ・Count(i) = 15は配列的な書き方だが、配列ではなく通常の変数の形にすべきです。変数名は関数にあるCountは使わない方がよい。 ・Xlvalidatelistは、xl定数は(前質問で書いたが)エクセルVBAの世界で定義されている定数のようで、Accessの世界からは使えないかも(小生不確か)。 ーー その他に点では、前の質問で申し上げたように、他アプリのコードからエクセルを動かそうとするのは、仕組みの知識が要る(安易にエクセルのVBAの知識だけでは危うい)ことに注意されたい。  この点は、関連記事も書籍やWEBで少なく苦労するはず。 ーー 小生も明日テストをやってみて、勉強します。とりあえず常識的に気が付いた点を挙げます。

関連するQ&A

  • エクセルのドロップダウンリストの行の高さについて

    エクセル2007のドロップダウンリストの行の高さで、困っています。 「データの入力規制」で、現在は4行のドロップダウンを作っています。 検索でいろいろと調べると、ドロップダウンのリストの1行の高さは、親のセルと同じ高さに なっているようです。 自分の作った4行のドロップダウンは、4行で親のセルと同じ高さになってしまい、 非常に文字が小さくなっていて、読みにくく実用になりません。 エクセル2007のどこかの設定で、このように制限されているのでしょうか? 通常のように、ドロップダウンのリストの1行の高さを、親のセルと同じ高さにしたいので、 そのやり方を教えてください。

  • ドロップダウンリストについて

    ドロップダウンリストの作成についてお願いします。 列にドロップダウンリストを作る方法はわかるのですが、行に作る方法がわかりません。 可能なのでしょうか?また、できればその方法について教えていただきたいです。 よろしくお願いします。 EXCEL2004forMac OS:mac OS X 10.4.8 使用しています。

  • ドロップダウンリストを大きくしたい。

    エクセル2000です。 入力規制でドロップダウンリストからの選択で入力しています。 リストデータが30件あったとして、ドロップダウンリスト内にその30件一度に表示させることはできないでしょうか?(10件程度しか表示されず、スクロールさせています) または、表示件数を増やすような設定は、ないでしょうか?

  • エクセル セルを結合させてドロップダウンリストを作りたい

    Office2003を使用しています。 エクセルで、結合させたセルの列を一つの列とみなしてドロップダウンリストを作成したいのですがうまくできません。 言葉が足りずにわかりにくいかもしれませんが、例えば1行目のA列とB列、2行目のA列とB列、3行目のA列とB列・・というようにセルを結合させていき、その列にドロップダウンリストを作成したいのです。 結合させた後に範囲を指定してドロップダウンリストを作成しようとすると、A列とB列の2列にドロップダウンリストを作成するように出来上がってしまいます。 何か方法はありますでしょうか? 宜しくお願いします。

  • ドロップダウンリストの行を増やしたいです。VBA。

    エクセル2000。VBAでコンボボックスを作成したのですが、ドロップダウンリストの表示する行の増やし方が分かりません。” 担当者”は20セル(人)指定しています。 プロパティからならListRowsを8から変更すればいいだけなので分かります。ですがVBAで実施したいです。ドロップダウンリスト表示を20に増やすにはどうしたらいいでしょうか?かなり困っていますのでどうぞ宜しくお願いします。 Selection.ListRows = 20 を足したところ、実行時エラー438「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」となりました。 Sub test() Dim sh As Worksheet Set sh = Worksheets("Sheet1") For i = 1 To 100 l = sh.Cells(i, "H").Left t = sh.Cells(i, "H").Top w = sh.Cells(i, "H").Width h = sh.Cells(i, "H").Height sh.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _ Left:=l, Top:=t, Width:=w, Height:=h _ ).Select Selection.ListFillRange = "担当者" Selection.LinkedCell = "H" & i Selection.PrintObject = False Next i End Sub

  • Access VBA 新しいシート作成

    Access VBAにてExcelファイルを編集するプログラムを作成しています。 Dim AppObj As Object 'Excel.Applicationオブジェクトの宣言 Dim WBObj As Object 'Excel.Workbookオブジェクトの宣言 Dim WsObj As Object 'Excel.WorkSheetオブジェクトの宣言 '実行時バインディング Set AppObj = CreateObject("Excel.Application") '編集を実施するワークブックを開く 'PathにはExcelファイルのフルパス、ExfにExcelファイル名が格納されています。 Set WBObj = AppObj.WorkBooks.Open(Path & Exf) 'Excelアプリケーションを表示する AppObj.Visible = True ※各Excelファイルはシートが1つだけ存在します。 この処理の直後に『数値』という名称の新しいシートを左から2番目に作成したいのですが、どのように記述すればよろしいでしょうか?

  • ○、×のドロップダウンリストを作りたい。

    エクセルで「○」か「×」かを選択できるように ドロップダウンリストを作りたいのです。 ドロップダウンリストに表示させたい 「○」「×」を別のセルに入力して、選択するように しているのですが、これを表示させないようにするには どうしたらよいのでしょうか? つまり、私がしていることは データ→入力規則→入力値の種類を「リスト」にする→元も値を「○、×が入力してあるセル を選択しているのです。」 この、元の値のセルの値が邪魔なのです。 どうぞ、よろしくお願いします。

  • excel vba でドロップダウンリスト

    sheet1のA1セルに、VBAでドロップダウンリストを作ろうとしているが、うまくいかず、どうかアドバイスをお願い致します。 ドロップダウンリストの元のデータは「datalist」というシートののA1セル~A10セルにあります。 参考書を参考にしながら、下記コードを作成しました。 Sub ドロップダウンリストの作成() Dim r As Variant For Each r In Range("A1") r.Validation.Add_ Type:=xlValidateList, _ formula1:="Worksheets("datalist")."=$A$1:$A$10" Next r End Sub

  • ウェブから貼ったドロップダウンリストのコンテンツ

    ウェブサイトに表示されている表の中にドロップダウンリストがあり、それを含めてエクセルにコピペしたところ、それらコンテンツはテキストボックスのような形のままでエクセルのセルには認識されていません。 このドロップダウンリストの数値は、どうやったらエクセル内のセルに認識させることができますか? このドロップダウンリストは、それぞれのセルの中身にかぶさるように(オブジェクトのように)表示されています。 コピペ元のウェブサイトはJava(?)を使っているようです。 私のエクセルは2010です。 週末の間に仕上げなければいけないレポートがあり、シロウトの頭で色々考えたり、試したりしましたが、さっぱり解決しません。 どうぞ、助けてください。

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

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

専門家に質問してみよう