ActiveXコントロール |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| わずかな知識で VBA! |
ActiveX
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ActiveXコントロール「ダイアログボックスを作ってみよう 1」で説明しましたが、 ActiveXコントロールというのは、ダイアログボックスを構成する 部品のことです。ユーザーフォームの上に配置して使用します。 また、エクセルのワークシートに直接配置して使用するActiveXコントロールも 用意されています。 こちらはマクロの登録方法がVBEで行う方法とちょっと異なりますが、 持っている機能は同じです。 シートに配置するコントロールには、ActiveXコントロールとは別に フォームコントロールというものもあります。 こちらは、Excel95から継承されているもので、 基本的にイベントという考えがありません。 このページでは基本的にユーザーフォーム上に配置するActiveXコントロール を説明しますが、ページ最後でワークシートに直接配置して使用するものの 取扱方法を説明します。 フォームコントロールへのマクロの登録方法は「マクロの登録」で説明して います。 マクロの登録 さて、ユーザーフォームにどのようなActiveXコントロールを配置するかで、 ダイアログボックスの使いやすさは決まってしまいます。 そのためにも、Excel VBA ActiveXコントロールにどのようなものがあるのか などを、知っておく必要があります。 そこで、それぞれのActiveXコントロールが持っている機能や、 その使い方などを細かく説明したいと思います。 |
わずかな知識でVBA! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ユーザーフォームツールバー VBEには、ユーザーフォームツールバーというツールバーが用意されています。 VBEの画面に表示されていない場合は、 ツールバーの「表示(V)」から、「ツールバー(T)」 ⇒ 「ユーザーフォームツールバー」にチェックをいれます。 ただし、私はあまり使っていません。コントロールを選択後にマウスの右クリックで用が足ります。 右クリックから表示されるメニューは、 ユーザーフォームツールバーに表示されているもの+「▼」ボタンを押すことにより表示される分です。 小さな「▼」ボタンを押すのが嫌いな方には右クリックをお勧めします。 ツールバーの各ボタンの上にマウスを持っていけば、コントロールチップテキストというもので、その名称(働き?) が表示されますが、簡単に説明しておきます。 注意:VBEのヘルプでは、コントロールのこともオブジェクトと呼ぶときがあります。 下の説明のオブジェクトもコントロールのことです。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
各コントロールが持っているイベントを調べる方法 各コントロールは、そのコントロールが持っているイベントにたいして記述されたイベントプロシージャ のコードによって機能します。 つまり、そのコントロールにイベントが発生した時に、自動的にコードが実行されるように作られています。 作成時には、そのコントロールが持つイベントの中から、 使用したいイベントを選択して、コードを記述しなければなりません。 各コントロールをダブルクリックすると、一番よく使うイベントプロシージャが作成されますが、 各コントロールが持っているイベントは1つではありません。 これを調べるには、まず、目的のコントロールをダブルクリックします。 コントロールによって、***.Click()か、***.Change()などの空のプロシージャが作成されます。 その状態で、下の図のプロシージャボックスの「▼」ボタンをクリックすると、 そのコントロールに用意されているイベントのサブメニューが表示され確認できます。 たとえば、コマンドボタンだけでも、13のイベントが確認できますが、 私が使用しているのは、「Click」イベントだけです。 その他のイベントは必要性を感じたことがありません(笑)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
「Tab」キー ここでも、変わった使い方をします。 ユーザーフォーム上でコントロールを順番に選択していきます。 フォーム上で重ねて配置したコントロールを選択するときなどに便利です。 【ツールボックス】ツールバーに、自作のコントロールを登録する。 タブストリップやマルチページ等で、ページ数を毎回修正していくのは面倒です。 そこで、よく使うカスタマイズしたそれらのコントロールをツールボックスに登録してしまいましょう! 方法はいたって簡単!作成したコントロールを、ツールボックスにドラッグ&ドロップするだけです。 いらなくなったら、マウスの右クリックから削除できます。 ただし、ドラッグ&ドロップするだけだと、Excelを終了すると消えてしまいます。 保存して、次回以降も使用したい場合は、【ツールボックス】ツールバーのタブをマウスで右クリックして、 「新しいページ(N)」を選択してページを追加します。 そのページにドラッグ&ドロップすれば次回以降も使用できます。 そこで気づくのは、【ツールボックス】ツールバーは、コントロールのマルチページだったということです。 ツールボックスの表示幅を変更することもできます。 マルチページなので、表示の変更を行うには、必ずタブをクリックしてください。 タブオーダー ユーザーフォーム上に配置した、各ActiveXコントローラーへの移行順序を設定する、 タブオーダーについて説明します。 エンターキーを押した時にフォーカスが移る順序をタブオーダーといいます。 *フォーカス:コントロールがアクティブになっている状態のことを「フォーカス」と言います。 タブオーダーを設定していない状態では、 フォーカスはコントロールをユーザーフォームに配置した順番で移行していきます。 そのままでも充分使えますが、先に入力すべきものが、後にフォーカスされたりしていては、 見栄えや使い勝手が悪いものとなります。そのために、タブオーダーを設定しておく必要があります。 方法は、非常に簡単で、ユーザーフォームを右クリックすると表示されるサブメニューの一番下に、 「タブオーダー(A)」とあるので、これをクリックし、タブオーダーを設定するダイアログボックスを表示します。 そのユーザーフォームに配置したコントロールの一覧がダイアログボックスに表示されているので、 「上に移動」、又は、「下に移動」ボタンで移動させ、入力手順に従った順番を設定していきます。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ワークシートに張り付けるActiveXコントロール ワークシートにコントロールを配置するには、開発タグを選択し、上の図の「挿入」ボタンをクリックします。 すると、上段にフォームコントロール、下段にActiveXコントロールが配置されたサブメニュが表示されます。 下段のActiveXコントロールの中から挿入したいコントロールを選択(クリック)し、次に、配置したいセルを クリックしながらドラッグして好みの大きさにします。この時に「Alt」キーを押しながら行うとセルの大きさとなります。 この作業を行うとExcelは自動的にデザインモードになり、図の「デザインモード」ボタンがオレンジ色になります。 あとでコントロールを編集したい場合には、この「デザインモード」をクリックしてから行います。 各コントロールは、デザインモードの時にコントロールを右クリックすると表示されるサブメニューから設定を行えます。 マクロの登録は、そのサブメニューの中の「コードの表示」を選択すると自動的にそのコントロールが持つ 標準的なイベントでプロシージャが作成されます。 上の図はシート1にチェックボックスを作成し「コードの表示」を実行したときのものです。 記述先も「Sheet1」になります。後はコードを記入すれば出来上がりです。 イベントの変更方法も使用方法もユーザーフォームに配置した場合と同じです。 では、最後にシート上にあるチェックボックスすべてのチェックをはずすマクロを書いておきます。 初期設定時に戻す時などで、一つ一つ外していくのが面倒という方には役に立つと思います。 こちらは標準モジュールに記述しても使用できます。 For Each Nextステートメントを使用しています Sub chbkesi() Dim chb As OLEObject For Each chb In ActiveSheet.OLEObjects If TypeName(chb.Object) = "CheckBox" Then chb.Object.Value = False End If Next chb End Sub となります。 たったこれだけのコードで百個でも千個でもワークシート上にあるチェックボックスすべてののチェックを外すことが できるのです。 すごいと思った方は、ちょっとだけExcelのVBAを勉強すればこれぐらいのことはできるようになります! |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
わずかな知識でVBA! TOP マクロで何ができる? ユーザーインターフェース マクロの記録 マクロの登録 イベントについて マクロの編集 ゲームで覚えるVBAプログラミング オブジェクトの操作 セルの操作 MsgBox関数・InputBox関数 変数の型 ヘルプの活用 イミディエイトウィンドウ Withステートメント Setステートメント 条件分岐のステートメント If Then Else,Select Case 繰り返しのステートメント Do Loop 繰り返しのステートメント For Next ダイアログボックスを作ってみよう1 ダイアログボックスを作ってみよう2 【実践編】 ActiveXコントロール 各コントロールのプロパティ 文字列の操作 Endプロパティ リンク・検索 相互リンク マイプロフィール YouTubeの部屋 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright (C) わずかな知識でVBA All Rights Reserved