ドロップダウンリストの行を増やす方法とVBAでの実施方法

このQ&Aのポイント
  • エクセル2000でVBAを使用してコンボボックスを作成しましたが、ドロップダウンリストの表示行を増やす方法がわかりません。
  • プロパティからの変更方法は分かっていますが、VBAで行いたいと思っています。
  • 試しにSelection.ListRows = 20と追加したところ、実行時エラーが発生しました。
回答を見る
  • ベストアンサー

ドロップダウンリストの行を増やしたいです。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

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

.Object.ListRows = 20 では、如何でしょうか 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   With sh.OLEObjects.Add(ClassType:="Forms.ComboBox.1")     .Left = l     .Top = t     .Width = w     .Height = h     .ListFillRange = "担当者"     .Object.ListRows = 20     .LinkedCell = "H" & i     .PrintObject = False   End With Next i

maniania55
質問者

お礼

早急な回答本ありがとうございました。 問題なく20行表示することができました!! かなり急ぎでどうしようかと思っていました。 お時間とって頂き感謝しております。 本当にありがとうございした。

関連するQ&A

  • コンボボックスのダウンリストの行

    フォームツールのコンボボックスを大量に作ろうと考えています。 以前にコントロールツールで作ったのですが結構重い為、今回フォームツールで作成したいのです。 その際、ドロップダウンリストの行を増やすにはどうしたらいいでしょうか? コントロールツールの時は下記コードで Object.ListRows = 20 で増やすことができたのですが、フォームツールの場合サポートしていませんとでます。 VBAで行を増やす事はできないでしょうか? 素人質問ですみません。 Sub Sheet1() Dim sh As Worksheet Set sh = Worksheets("Sheet1") For i = 1 To 100 l = sh.Cells(i, "E").Left t = sh.Cells(i, "E").Top w = sh.Cells(i, "E").Width h = sh.Cells(i, "E").Height With sh.OLEObjects.Add(ClassType:="Forms.ComboBox.1") .Left = l .Top = t .Width = w .Height = h .ListFillRange = "担当者" .Object.ListRows = 20 .LinkedCell = "E" & i .PrintObject = False End With Next i End Sub

  • ドロップダウンメニューの方法を教えてください

    ■ドロップダウンメニューでサブメニューが横並びで出るようにしたいと思っています。 HTMLは下記のように記述しています。どのようにJavascriptを記述すると良いのか教えてください。よろしくお願いします。 【html】 <div id="menuber"> <a href="#"><IMG src="test/m1.gif" width="101" height="20" border="0" align="left"></a> <div class="hiddenmenus"> <span id="sub"> <a href="#"><IMG src="test/sub1.gif" width="101" height="20" border="0" align="left"></a> <a href="#"><IMG src="test/sub2.gif" width="101" height="20" border="0" align="left"></a> <a href="#"><IMG src="test/sub3.gif" width="101" height="20" border="0" align="left"></a> <a href="#"><IMG src="test/sub4.gif" width="101" height="20" border="0" align="left"></a> </span> </div> </div> 【CSS】 .hiddenmenus {position:absolute; top: 20px; left: 0px;} #sub1 { visibility: hidden; }

  • ドロップダウンリストが開かないのは何故?

    Windows8.1で、MS-Office2010を利用しています。 VBAで、ドロップダウンリストを組み込んで利用しているのですが ある日、突然、このドロップダウンリストが開かなくなりました。 設定は何も変えていませんし、ウィルス感染もしていません。 ドロップダウンリストが開かなくなった直後に、ウィルス・スキャンを 実施しましたが、ウィルスは検知されませんでしたから。 仕方なく、MS-Office2010をアンインストールした後に 再度インストールしてみましたが、症状は全く変わりませんでした。 どうすれば、元のようにドロップダウンリストが開くようになるのでしょうか? 宜しくご指導願います。

  • 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

  • VBAでドロップダウンリストを連動させたものを作るには?

    VBAでドロップダウンリストを連動させたものを作ることが出来ますでしょうか? 今まで入力規則の設定をつかって見ていましたがどうやら実現不可能と思われることが分かってきました。 VBAでの連動したリストの代替案を考えていますが・・・ いい方法は無いでしょうか? このページのようなことがやりたいと思っています。 http://www.relief.jp/itnote/archives/000822.php

  • Excel2007 VBA ラジオボタン Caption

    動的に生成したActiveXコントロールのOptionButtonのプロパティを設定しようと考えています。 For i = StRow To EdRow Step 1 Sheet.Cells(i, Col).Select Left = ActiveCell.Left Top = ActiveCell.Top Width = ActiveCell.Width Height = ActiveCell.Height Set Page = Sheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", _ Left:=Left, _ Top:=Top, _ Width:=Width, _ Height:=Height) Page.Name = "Opt" + CStr(i) Page.GroupName = "選択" Page.Caption = "" Next i Nameプロパティは正常に設定できるのですが、GroupNameとCaptionでエラーになってしまいます。 エラー'438' オブジェクトはこのプロパティまたはメソッドをサポートしていません。 となります。 VisualBasicのヘルプよりOptionButtonのプロパティとしては存在しているので、なぜサポートしていないといわれるのかがわかりません。 どのようにすれば設定可能でしょうか。

  • vbaでIE制御によりドロップダウンリスト表示

    こんばんは。 VBAでIEの操作をしています。 IEのドロップダウンリストはマウスでクリックすると、リストを表示します。 このリストを表示させるということまでをVBAで実現したいです。 用途:   Webアプリが仕様通りのドロップダウンリストを表示できることのテストに必要です。   ドロップダウンリストを表示させた状態で、画面をキャプチャして、この画面キャプチャ   のリストと仕様のリストを比較して、試験結果を評価したいです。   ドロップダウンリストがいろんな画面のいろんな箇所にあって、手作業がいやなんです。 いろんな画面を表示して、画面キャプチャをとるマクロは完成しています。 大変お手数ですが、宜しくご教示ください。

  • EXCELのVBAで画像ファイルを呼び出し

    EXCELのVBAでセルに入力されているファイル名の画像ファイルを呼び出して、 トリミング、縮小→一旦切り取り、メタファイルで貼り付け→セルの真ん中に配置ということを行いたいです。 このようなVBAを組みましたが、bw = .Width でエラーが起こってしまいます。 一旦切り取りして貼り付けするコードを加えたらエラーになりました。 どのようにしたらきちんと希望の形ではりつけることができるでしょうか? よろしくお願いします。 Sub photocalltest() 'セルの値を取得して画像を貼り付け ' ' Dim i As Long For i = 2 To 5 ActiveSheet.Pictures.Insert ("C:\Documents and Settings\temp\" & Cells(7, i).Value & ".jpg") With ActiveSheet.Shapes(ActiveSheet.Shapes.Count) 'トリミング .PictureFormat.CropBottom = 95 .PictureFormat.CropRight = 57.78 .PictureFormat.CropLeft = 59.28 .PictureFormat.CropTop = 100 '縮小 .Height = 197.25 .Width = 162# .Cut 'Cells(7, i).Select ActiveSheet.PasteSpecial Format:="図 (拡張メタファイル)" '貼り付け位置指定 aw = Cells(7, i).Width bw = .Width //ここでオブジェクトが必要ですエラー x = (aw - bw) / 2 .Left = Cells(7, i).Left + x ah = Cells(7, i).Height bh = .Height y = (ah - bh) / 2 .Top = Cells(7, i).Top + y End With Next i End Sub

  • VBA

    選択したセルから複数画像を貼付け、画像の右セルに画像名を記入したいのですが、 画像名の記入方法がわからず、うまく動作できません。 ご教授の程、宜しくお願い致します。 例)A1セルを選択マクロ実行、画像3枚を貼付けたい:A1~A3セルに画像貼付け、B1~B3セルに画像名記入 ※※※※※※※※※※マクロ※※※※※※※※※※ Sub 画像貼付け() Dim i As Long, j As Long, k As Long Dim FileName As Variant Dim dblscal As Double Dim sp As Shape FileName = Application.GetOpenFilename( _ filefilter:="画像ファイル,*.jpeg;*.jpg;*.gif;*.JPG", _ MultiSelect:=True) Dim inp As Range On Error Resume Next Set inp = Application.InputBox( _ prompt:="マウスで開始セルを選択してください", _ Title:="開始セルを選択", _ Default:="マウスで開始セルを選択する", _ Type:=8) ''←メッセージボックスで開始セルを選択させる If Err.Number = 0 Then MsgBox mayrange.Address Else MsgBox "キャンセルしました。" End If j = inp.Row ''←選択した開始セルの行 k = inp.Column ''←選択した開始セルの列 For i = LBound(FileName) To UBound(FileName) Cells(j, k).Select With ActiveSheet.Shapes.AddPicture( _ FileName:=FileName(i), _ linktofile:=False, _ savewithdocument:=True, _ Left:=Selection.Left, _ Top:=Selection.Top, _ Width:=0, _ Height:=0) .ScaleHeight 1, msoTrue .ScaleWidth 1, msoTrue If Cells(j, k).Width / .Width < Cells(j, k).Height / .Height Then dblscal = WorksheetFunction.RoundDown(Cells(j, k).Width / .Width, 2) Else dblscal = WorksheetFunction.RoundDown(Cells(j, k).Height / .Height, 2) End If .Width = .Width * dblscal * 0.97 .Height = .Height * dblscal * 0.97 .Left = .Left + (Cells(j, k).Width - .Width) / 2 .Top = .Top + (Cells(j, k).Height - .Height) / 2 End With k = k + 0 j = j + 1 Next i End Sub

  • ドロップダウンメニューについて質問です。

    横並びのナビゲーションに更にドロップダウンをつけたいのですがうまくいかないので質問させていただきます。 メニューはそれぞれバッググラウンドで使ってます。 横並びのナビげーションはできました。 ロールオーバー時の画像の入れ替えもできました。 コレクション部分のドロップダウンがうまくいきません。 ドロップダウンで3つでるようにしたいと思うのですが 現状のHTML&CSSを記載します。 よろしくお願いいたします。 html <div id="navi"> <ul> <li class="nav_03"> <ul class="sub"> <li class="nav_001"></li> <li class="nav_002"></li> <li class="nav_003"></li> </ul> </li> </ul> </div> CSS #navi { height: 10px; width: 650px; margin-top: 34px; margin-left: 154px; margin-bottom: 75px; } #navi li { float:left; list-style-type: none; } .nav_03 a { height: 10px; width: 54px; background-image: url(../images/navi/catalog.jpg); background-repeat:no-repeat; display:block; text-indent:-9999px; margin-right: 42px; } .nav_03 a:hover { height: 10px; width: 54px; background-image: url(../images/navi/catalog_r.jpg); background-repeat:no-repeat; display:block; text-indent:-9999px; margin-right: 42px; #navi ul.sub li { float: none; height: 10px; width: 54px; list-style-type: none; } #navi ul.sub li a { background: none; height: 10px; width: 54px; } #navi ul.sub .nav_001 li a:hover { background-image: url(../images/navi/tops_r.jpg); height: 10px; width: 54px; display: block; background-repeat: no-repeat; position: absolute; z-index: 10; } #navi ul.sub .nav_001 li a{ background-image: url(../images/navi/tops.jpg); height: 10px; width: 54px; display: block; background-repeat: no-repeat; } /*サブメニューを、カーソルが乗るまで非表示にしておく設定*/ ul .nav_04 li ul { display: none; } /*サブメニューを、カーソルが乗った時に表示する設定*/ #navi ul li:hover .sub .nav_001{ display: block; position: absolute; z-index: 100; background-image: url(../images/navi/tops.jpg); height: 10px; width: 54px; display: block; float:left; line-height: 180%; } #navi ul li:hover .sub .nav_002{ display: block; position: absolute; z-index: 100; background-image: url(../images/navi/bottoms.jpg); height: 10px; width: 54px; display: block; float:left; line-height: 180%; }}

専門家に質問してみよう