• ベストアンサー

Excel VBA コントロールの追加方法

こんにちわ おわかりになるかた、教えてください。 ExcelVBA で、下記の様な方法でラベルコントロールを追加できるのですが、 ステータスバーとリストビューを追加する方法がわかりません。 set myControl = myForm.Designer.Controls.Add("Forms.Label.1") 追加したいステータスバーは下記となります。 Microsoft StatusBar Control, version 6.0 Microsoft ListView Control, version 6.0 よろしくおねがいいたします。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

Microsoft StatusBar Control, version 6.0 が "MSComctlLib.SBarCtrl.2" Microsoft ListView Control, version 6.0 が "MSComctlLib.ListViewCtrl.2" です。 調査方法で比較的簡単そうなのは、試しにWorksheet上に手作業でコントロールを追加してみる事です。 ([コントロールツールボックス]の[コントロールの選択]から) 数式バーにオブジェクト種別が出ます。それぞれ =EMBED("MSComctlLib.SBarCtrl.2","") =EMBED("MSComctlLib.ListViewCtrl.2","") となります。 (※環境によっては変なコントロールを追加するとExcelがいきなり落ちたりしますから注意) あとはレジストリエディタから探る方法もあるかと思います。

umeko0804
質問者

お礼

ありがとうございます! おかげさまで、実現することができました。 調べ方まで教えていただき、本当にありがとうございます。 感激です。

関連するQ&A

  • 【VBA】の記述でお助けください。

    excel2003を利用しています。 社内で共有で利用しているファイルがあります。 そのファイルのユーザーフォームで、添付している写真のような listview (リストボックスの一種)を利用しています。 このlistviewをどの端末でも利用できるようにするためには、 各端末にVBEの Microsoft ListView Control 6.0(SP4) というコントロールを追加しなくてはいけません。 そこで、このlistviewが使われているファイルを開くと、自動的に Microsoft ListView Control 6.0(SP4) が追加されるようにしたいです。 WorkbookのOpenメソッドに何らかの記述をしてやればよいと考えていますが、 どういった記述をすればよいか等、教えていただけないでしょうか? 以上 よろしくお願いいたします。

  • VBA 追加したMultiPageでのイベント

    ExcelVBAでどうしても分からないところがあったため、質問させていただきました。 <Usrform上Control> ・UserForm1 ・MultiPage-Page1 ・CommandButton1(押すとPageが追加されます。Page1,Page2,Page3...) ・Combobox1 ・TextBox1 <現在可能な動作> UserForm1上にMultiPageのPage1を設定しています。 CommandButton1を押すとPage2が追加され、Page1上に設定されてあるCombobox1とTextBox1をPage2上に追加します。 <行ないたい動作> 現在は、Page1上でCombobox1の値が変更された時に、Page1上のTextBox1の値が変更されるように設定していますが、 Page2上のCombobox1の値が変更された時に、Page2上のTextBox1の値を変更することは出来ますでしょうか? 使用Versionは、Excel 2003です。 何卒、よろしくお願いします。 <Code> Private Sub CommandButton3_Click() Dim myCmbbx As MSForms.ComboBox Dim myTxtbx As MSForms.TextBox With MultiPage1 .Pages.Add , , .Value + 1 .Value = .Value + 1 End With With MultiPage1.SelectedItem Set myCmbbx = .Controls.Add("Forms.Combobox.1", "ComboBox1", True) With myCmbbx .AddItem "AAA" .AddItem "BBB" .AddItem "CCC" End With Set myTxtbx = .Controls.Add("Forms.TextBox.1", "TextBox1", True) With myTxtbx .MultiLine = True End With End With End Sub Private Sub ComboBox1_change() If ComboBox1.Text = "BBB" Then TextBox1.Value=1234567 End If End Sub

  • 最適なコントロールは??

    お世話になっております。 現在、ExcelVBAで、シート上のある情報を、フォーム上のListViewコントロールに移し、時間と共に上から反転(選択状態)となるコーティングをしています。 (例:↓リスト[ListViewコントロール]) 名前1 , 0:05 名前2 , 0:03 名前3 , 0:10 ・・・ ↑この場合、「スタート」ボタンを押すと同時に、5秒経つと「名前1」の行が、さらにそこから3秒経つと「名前2」の行が選択状態になるといった代物です。 ここで例えば「名前2」のListItemと「名前3」のListItemのリストの順番を逆にしようとした場合、選択した瞬間に、今まで選択状態だったものが解けてしまいます。おまけにこのListViewコントロールはセルのバックカラーを変更することもできません。 説明が長くなってしまったのですが、同じようなコントロールで、「FlexGrid」・「DataGrid」・「DataList」等いろいろありますが、セルのバックカラーを自由に変えれるコントロールはありますでしょうか?もしくはこれらのコントロールの使用方法等を記載したサイト等を教えていただけないでしょうか?いろいろ探してはみたのですがなかなか見つかりません。よろしくお願いします。

  • ExcelVBAでListViewが使用できない

    ノートパソコン(Windows7 64bit、EXCEL 64bit)を使用して、VBAでツールを作成しています。 フォーム上にListViewを追加したいのですが、コントロールの追加ダイアログにて 「Microsoft ListView Control, version 6.0」がリストがないので追加することができません。 参照設定にも「Microsoft Windows Common Controls 6.0(SP6)」がありませんでした。 これが原因かと考え、System32に「MSCOMCTL.OCX」がなかったので、 ListViewの使える他のパソコン(Windows7 32bit、EXCEL2010 32bit)から 「MSCOMCTL.OCX」を持ってきて入れました。 すると参照設定で「Microsoft Windows Common Controls 6.0(SP6)」を選べるようになったのですが、 未だにコントロールの追加ダイアログ上ではListViewの利用ができない状態でした。 職場のほとんどパソコンではListViewが使用可能なのですが、 ListViewが使用できないパソコンの条件などあるのでしょうか? ご回答お待ちしておりますのでよろしくお願い致します

  • 【VB 2005】継承したコントロールにプロパティを追加するには?

    System.Windows.Forms.Labelを継承して 背景や、フォントを設定することは出来るのですが これをプロパティを使用して個別に設定する方法を探しています。 例えば LabelSizeというプロパティを作成し Small、Mediam、Largeから選択された 値によってコントロールの大きさを変えたいと思っています。 よろしくお願いします。

  • WebBrowserコントロールを追加したい

    アクセス2007でツールボックスにWebBrowserコントロールを追加したいので http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9195.html を見たのですが、 2. 追加するための操作方法  (1) VBE画面の[ツール]メニュー [その他のコントロール]をクリック  (2) [Microsoft Web Browser]をチェックして [OK]ボタンをクリック と記載されてますが、VBE画面に [その他のコントロール]がありません。 2007ではどうやって、WebBrowserコントロールを追加すればいいでしょうか?

  • ExcelにてListviewが表示できない

    Excelにて「Microsoft Listview Control 6.0」を使っていたのですが、 突然、表示できない状況になりました。 修復させる方法はあるのでしょうか? また、最悪の場合、普通のListで作成し直したいのですが、 その際に、Listview他のコントロールを再利用したいので、 Listviewをフォームを表示させないで削除する方法はあるのでしょうか? それとも、他のコントロールも作り直すしかないのでしょうか? よろしく、お願いいたします。

  • VB.NETでフォーム間でのコントロールの参照

    VB.NETでフォーム間でのコントロールの参照が うまくいかず困っています Windows フォーム Form1とForm2があります Form1にはリストビュー(name:ListView1)を配置しています Form1_LoadイベントでListView1にアイテムを追加します Form2を表示し、Form1のListView1のアイテム数を、 取得しようとすると 0 になってしまします どうすればForm2から取得できるのでしょうか? 次のように書いています Form1_Load イベント内 ListView1.Items.Add("Item1") ListView1.Items.Add("Item2") ListView1.Items.Add("Item3") MessageBox.Show(CStr(ListView1.Items.Count), "Form1") Dim Form2 As New Form2() Form2.Show() Form2_Load イベント内 Dim Form1 As New Form1() MessageBox.Show(CStr(Form1.ListView1.Items.Count), "Form2")

  • 【VB.NET】カスタムコントロールのプロパティ

    お世話になっております カスタムコントロールのプロパティについて質問です InputManのGcTextBoxを継承したカスタムコントロールを作成しました。 カスタムコントロールにはPublicのプロパティがあり、その中で必要がなくなったプロパティがあるため削除しました。 しかし、削除するとカスタムコントロールを使用しているFormのDesignerファイルで多数のエラーが出ており、見てみると削除したプロパティの設定が残っていました。 designerファイルを一つ一つ開いて消そうと思いましたが、かなり多いため非常に手間がかかります。 そこで相談なんですが、なにか一括、もしくは自動で消す方法等あればご教授願います。 ちなみに環境はVisualStudio2008でコントロールはInputMan for Windows Forms 6.0jを使用しています。

  • WebBrowserコントロールを継承するには

    VB.NETで既存のWebBrpwserコントロールを継承して 独自のコントロールを作成せいしたいのですが上手くいきません。 以下、私が実践した手順です。 1.プロジェクトにクラスを追加   →クラス名:CBrowser 2.CBrowserにWebBrowserを継承   →Inherits WebBrowserを記述 3.フォームに既存のWebBrowserを配置 4.Designer.vbを編集   →2箇所のSystem.Windows.Forms.WebBrowserをCBrowserに置き換え このやり方だと、稀にフォームデザイナーがエラーを出してしまいます。 よろしくお願いします。

専門家に質問してみよう