• ベストアンサー

Excel VBAのコントロールについて

ExcelVBAを使っています。 Formを作り、そこにListBoxやComboBoxを設定し、 WorkSheetへのデータ入力を簡単化しています。 この度、ListBoxやComboBoxではなく、 Formに表のようなものを作り、表の要素(例えば1行3列目の情報)をクリックすると、worksheetのセルに代入されるようなものを考えています。 が、VBAに、そのようなコントロールがありません。 [メニュー]-[ツール]-[その他のコントロール]を今調べています。 もし、何か最適なものをご存知のかたがいれば、 教えてください。

  • ssi77
  • お礼率76% (32/42)

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

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

質問に直に答えていないので気に食わないかもしれないが 下記でどうですか。 シートに直接Listboxを貼りつける。コントロールツール ボックスの方。 ListboxのClickイベントに Private Sub ListBox1_Click() ActiveCell = ListBox1.List(ListBox1.ListIndex) End Sub をコードします。 ListboxはFilllistRangeプロパティで入力候補の入ったセル範囲を指定しておきます。(入力候補を別シートのSheet2!A1:A6なども出来る。) 入力したいセルをポイントして、リストボックスのアイテムをクリックすると値がセットできます。 結構スピーディですよ。

ssi77
質問者

お礼

返答ありがとうございました。 imogasiさんの方法を含めいろいろ試しました。 それで、spreadsheetコントロールを 使うことになりました!

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

ListBoxでColumnCountを複数にする

ssi77
質問者

お礼

返答ありがとうございました。

関連するQ&A

  • VBA ユーザーフォーム

    こんばんわ。 VBA、ユーザーフォームで、ListBoxか、Comboboxで、セルの値を参照し、そこから1つ選択するようにするにはどういうコードがりますか? Private Sub Userform_Initialize   Listbox1.AddItem "700" Listbox1.AddItem "701"   ・・・・・   ・・・・・   ・・・・・ End Sub と、やると、ListBoxには反映しますが、列が多すぎて、作成するのに手間が掛かる為、例えば、"700" の値に、Sheets(1)のC2から、C500の値を入れるようなコードはありますか? 宜しくお願いします。

  • EXCEL VBAについての質問です

    質問させてください。 添付した画像のような表にて在庫の管理をしたいと考えています。 VBAのフォームを使用し、テキストボックスに入出庫の数値を入れ、 入庫、出庫のボタンを押し、在庫の数値を増減させたいと思っています。 下に書かせていただいたような流れでできないものかと思ったのですが、 3行目と4行目のプログラムがうまく動作させられません。 offsetを使用し、セルをずらすことができるかと思いましたが エラーが出てしまい実行することができませんでした。 どなたか方法をご存知の方がいましたら回答よろしくお願いします。 また、もっとベターな方法がありましたらアドバイスをよろしくお願いします。 Private Sub CommandButton1_Click() '「a」という単精度浮動小数点数型 の変数を宣言する. Dim a As Single 'ワークシート「Sheet1」をアクティブにする. Worksheets("Sheet1").Activate 'textbox1の内容を変数aに入れる. a = TextBox1.Value1 'Comboboxで選択したセルの4つ右隣のセルの値を(A32)に記入する Worksheets("Sheet1").Range("A32") = ComboBox1.Offset(4,0).Value 'セル(A32)と変数aを足し、その値をComboboxで選択したセルの4つ右隣のセルに記入する 'Worksheets("Sheet1").ComboBox1.Offset(4,0).Value = a + ComboBox1.Offset(4,0).Value End Sub

  • Excel VBA ユーザーフォームについてs

    ExcelVBAでユーザフォームを作成していますが行き詰まっています。 お助け下さい m(__)m VBAの処理内容を新Sheetへ保存し、 その内容をユーザフォームへWorkSheetとして表示させて エンドユーザに直接編集してもらおうと思っています。 ユーザフォームの『コントロールの追加』で「Microsoft Office Spreadsheet XX.X」を追加して 空のWorkSheetを追加することは出来たのですが、 このWorkSheetを空でなく前出の処理内容を反映したSheetにすることは出来るでしょうか? VBA処理 ⇒ 結果反映WorkSheet(1)作成 ↓ ユーザフォーム表示 : (1)を表示したい よろしくお願いします。

  • エクセルVBAについて

    エクセルVBAについて range("B5") = 1行の、選択したセルの値 というようなマクロを作成したいと思っています。 というのも、B5セルの値が、1行で選択したセルの値に変化できればと思っています。 ちなみに下のようなコードを書いてみたのですが、うまくいきません orz Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B5") = Rows(1).ActiveCell.Value End Sub 初心者で申し訳ありませんが、よい方法がありましたら、 よろしくお願いいたします。

  • エクセルでwebbrowserコントロールを利用したい

    的外れな部分がありましたら、その点でもご指摘くださいますようお願いいたします。 利用しているのはExcel2000です。 エクセルのツールの「コントロール/ツールボックス」にWebbrowserコントロールが見当たりません。 『VBE画面から「ツール」」メニュー→「その他のコントロール」にて設定する』旨の記述をネット上で見つけました。 「VBE画面」はVBAのエディット画面であると認識し、当行程を行おうとしたところ、「その他のコントロール」メニューがDisableになっていました。 そこでその上の参照設定メニュにあたってみましたが、該当するものを特定できませんでした。 Webbrowserコントロールはどのようにすれば利用できるのでしょうか? よろしくお願いいたします。

  • EXCEL VBAで、日付の後に曜日を追加する方法について

    EXCEL VBAの日付の機能のことで教えていただきたいことがあります。    A列 1行:2008/02/01 2行:2008/02/03 3行:2008/02/04  ・  ・ コントロールツールボックスでコンボボックスをシートに挿入 Private Sub Workbook_Open() With ComboBox1 .AddItem Range("A1") .AddItem Range("A2") .AddItem Range("A3")     ・     ・ End With End Sub コンボボックスには「2008/02/01」等と表示されたリストが表示されると思いますが、 選択した後の値を「2008/02/01(月)」というように、 日付の後に曜日を追加して表示させるにはどのような処理をしたらよろしいでしょうか。 Private Sub ComboBox2_Change() ComboBox2 = ? End Sub というようなやり方かとは思うのですが、具体的なコードがさっぱり思い浮かびません。 どうぞよろしくお願いいたします。

  • エクセルVBAでデータ検索(Win2000,Excel2000)

    エクセルで毎日の業務で手計算している作業をVBAコードかいて試しているのですが、縦と横の検索で行き詰まってしまい質問しました。どうぞよろしくお願いします。 _A__B____C____D__E__F___G___H 1| 2|_______その他_1~3_4~6_7~10_11~20_21~30 3| 3|__項目A___ 0___50__49__46___43__40 4|__項目B___ 0___45__44__39___37__34 5|__項目C___ 0___43__42__34___30__ 28 行 *このデータは現在(B3:V42)にあり今後増える可能性あり *1行目とA列は空白です。 *2行目とB列は対応する項目です。 *3行目は関係ない値が入っています(データをつくる為の値) このようなデータが、"Sheet2"にあると仮定します "Sheet1"のシート上に配置したComboBox(コントロールツールボックスの)に検索値があります。 (ComboBox1 → 数値 , ComboBox2 → 数値 , ComboBox3 → 文字)*リストは"Sheet1"に登録してあります。 TextBox1 ÷ 2 の結果を小数点以下切上げし、これにTextBox2の値をかけたもの(仮にAAAとする)が、2列目のそれぞれのセルの数値範囲に対応し、TextBox3の文字列がB列に対応し、両検索結果の交わったセルの値を返すようにしたい。 例)もしAAAが「8」なら「F列」をみる。TextBox3 の文字列が「項目B」なら「4行目」をみる。この結果、交わったセルは「F4」なので、「F4」にある値「39」を"Sheet1"."A1"に返す。 また、これらコンボボックス(このシートとは別にテキストボックスを使うこともある)にはひとつずつchangeイベントでいきなり別シート("Sheet3")に書くコードが既に書いてあります。このセルから取り出すことも可能です。よろしくお願いします。

  • VBAでエクセルのいくつかの表を同じ配列に格納する

    VBA初心者です。 調べてみましたがどうにも情報に行きあたらなく、ご質問をさせていただきます。 添付のようなエクセル上の同一シート上にある3つの表をコピーし、VBAで同じ配列の各列として取り込みをしたいと考えております。 大分類、中分類、小分類のそれぞれの行は同じもののそれぞれの内容を記載しており、 できればこれらを同じ配列の1列目、2列目、3列目に格納をしたいと思っております。 これらの表が1つの表にまとまっていれば、 Dim 配列(1,10) as Variant 配列 =range("A1:C10") で事足りると思うのですが、別々のためこの方法がとれません。 セル指定で行うことも考えましたが、データが10万行を超える場合もあるため、できれば避けたいと思っています。 各表を指定し、配列の1列目、2列目、3列目に一括して代入をご存じでしたらら、どうぞ教えていただきたいと思います。 どうぞよろしくお願いします。

  • エクセル2003で作成したVBAを2007で使用したい

    エクセル2003で下記のようなVBAを作成していました。 作成した物を使用者が印刷設定を変更できないように ブックを開くと同時に印刷ボタンなどを非表示にしていたのですが・・・ 2007でも使用出来るようにしたいと思ったのですが 2007ではこのままではエラーが出てしまうようです。 2007はまったく扱ったことがないのでどのようにすればよいかわかりません。 どなたかご教授いただけたらと思います。 Private Sub Workbook_Open() Application.DisplayStatusBar = False 'ステータスバー非表示 'ブックを開く時ページ設定と印刷を非表示 On Error Resume Next Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("ページ設定(&U)...").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷(&P)...").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷プレビュー(&V)").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷範囲(&T)").Enabled = False Application.CommandBars("Standard").Enabled = False End Sub

  • エクセル2003 VBAで セル内を 一発呼び出し

    エクセル2003 オートフィルタではなく VBAで セル内を 一発呼び出ししたいので。  よろしく お願いします。 表 列A~E(結合2行) :商品名と内容   列H~K(結合2行) 住所氏名電話番号を記載してます。 1年分を オートフィルターで  氏名 や 商品名で 探すのは 結構 時間がかかります。 同じものが ほぼ少ないため。。。 そこで  たまに 同じ氏名  同じような 品を 検索する セルを 2個ほど作って  そこへ セル1へ 商品名を入力すると  該当する 行のみ 表示される。 セル2に 名前をを入力すると  該当する 行のみ 表示される。 また、セルを赤色に塗った部分の結合行(2~3行)を 赤色に塗りつぶした行のみ 表示も できれば うれしいです。 コマンドボタン等を使ってもいいので お願いします。 そんな VBAを 作っていただけませんでしょうか^^; お手数おかけしますが どなたか よろしく お願いします。