Unloadステートメント
Unload ユーザーフォーム名 / Unload Me
ユーザーフォームを閉じるには、Unloadステートメントを使います。Unloadステートメントは、閉じるユーザーフォームの名前を引数に指定します。ただし、一般にユーザーフォームは、コマンドボタンなどによって“自分自身”を閉じることが多いです。そこで、ユーザーフォームの“自分自身”を表すMeというキーワードを使って閉じる方法が便利です。
次のサンプルでは、「CommandButton1」という名前の「OK」ボタンをクリックしたときのイベントとして、「自分自身を閉じる」という操作を指定しています。
「CommandButton1」をクリックしたら、ユーザーフォームを閉じる
Private Sub CommandButton1_Click()
Unload Me
End Sub
実行結果。「OK」ボタンのクリックで閉じる




ユーザーフォームを表示するには?
Showメソッド
ユーザーフォーム.Show
デザインしたユーザーフォームを画面に表示するには、Showメソッドを使います。UserFormオブジェクトは、ユーザーフォームの名で指定すればOKです。引数に何も指定しないと、既定値では「モーダル(modal)」な状態で表示されます。
モーダルなユーザーフォームは、ユーザーフォームを閉じるまでExcel で他の操作ができません。閉じるには、右上隅の「×」ボタンを押します。
「UserForm1」を開く
Sub Sample1()
UserForm1.Show
End Sub
実行結果



ユーザーフォームを作るには?
VBEは、ユーザーフォームをデザインする機能も備えます。
「挿入」メニューの「ユーザーフォーム」を選ぶと、プロジェクトエクスプローラーに「UserForm1」といったフォームが追加され、右側にそのデザイン画面が開きます(図1)。「ツールボックス」からパーツを選んでフォーム上をドラッグすれば、フォーム
上にボタンや文字列(ラベル)、入力欄(テキストボックス)などを自由に配置できます。
フォームのパーツを操作したときに実行する機能を記述するには、デザイン画面でパーツをダブルクリックします。すると、パーツを操作したときに実行するマクロ(イベントマクロと呼ぶ)を書く場所が現れます(図2)。再びデザイン画面に戻るには、「UserForm1」などのアイコンをダブルクリックします。
図1●「挿入」→「ユーザーフォーム」を選ぶと、「UserForm1」が追加されて、フォームのデザイン画面が開く


図2●描いたボタンをダブルクリックすると、ボタンをクリックしたときに実行するマクロの入力画面が開く


Seriesオブジェクト、AxisGroupプロパティ
Chart.SeriesCollection.AxisGroup
一部の系列だけ第2軸にプロットするには、第2軸にプロットしたいSeriesオブジェクトを指定して、AxisGroupプロパティに「2」を設定します。右のサンプルコードは、1つ目の系列を折れ線にして第2軸にプロットした例です。
1つ目の系列だけ折れ線にして第2軸に移動する
Sub Sample()
With ActiveSheet.ChartObjects(1) _
.Chart.SeriesCollection(1)
.ChartType = xlLine
.AxisGroup = 2
End With
End Sub
実行例


Seriesオブジェクト、ChartTypeプロパティ
Chart.SeriesCollection.ChartType
一部の系列だけグラフの種類を変えるには、変更したいSeriesオブジェクトを指定して、ChartTypeプロパティにグラフの種類を表す定数を指定します。
1つ目の系列だけ折れ線グラフにする
Sub Sample()
ActiveSheet.ChartObjects(1).Chart _
.SeriesCollection(1).ChartType = xlLine
End Sub
実行例


ChartオブジェクトのChartTypeプロパティ
Chart.ChartType
グラフ全体の種類を変更するには、ChartオブジェクトのChartTypeプロパティに、グラフの種類を表す定数を指定します。
次のサンプルコードでは、棒グラフを円グラフに変更した上で、凡例をグラフの下に表示させています。
円グラフをに変更して凡例を表示
Sub Sample()
With ActiveSheet.ChartObjects(1).Chart
.ChartType = xlPie
.HasLegend = True
.Legend.Position = xlLegendPositionBottom
End With
End Sub
実行例


AxesオブジェクトのMinimumScaleプロパティとMaximumScaleプロパティ
Chart.Axes(xlValue).MinimumScale
Chart.Axes(xlValue).MaximumScale
グラフを使って数量の差を見せたいとき、数値軸の最小値を大きめに、最大値を小さめにすることで、要素同士の数量の差が際立ちます。
マクロで数値軸の最小値/最大値を設定するには、AxesオブジェクトのMinimumScaleプロパティとMaximumScaleプロパティを使います。それぞれ数値で指定することができます。
なお、標準設定である「自動」は、MinimumScaleIsAutoプロパティとMaximumScaleIsAutoプロパティで設定します。それぞれTrueとすれば、「自動」となります。
数値軸の最小値を900、最大値を1800に変更する
Sub Sample()
With ActiveSheet.ChartObjects(1).Chart
.Axes(xlValue).MinimumScale = 900
.Axes(xlValue).MaximumScale = 1800
End With
End Sub
実行結果


Pointsコレクション、Explosionプロパティ
Chart.SeriesCollection.Points.Explosion
円グラフの一部を外側に切り離すには、系列内の要素をPointsコレクションで取得し、そのExplosionプロパティに、切り離す距離を整数で指定します。
Explosionプロパティに指定する整数は、半径に対する割合です。例えば「Explosion = 15」は、半径の15%に相当する距離だけ切り離すという意味です。
円グラフの1つ目の要素を切り離す
Sub Sample()
ActiveSheet.ChartObjects(1). _
Chart.SeriesCollection(1). _
Points(1).Explosion = 15
End Sub
実行例


ChartオブジェクトのClearToMatchStyleメソッド
Chart.ClearToMatchStyle
ChartオブジェクトのClearToMatchStyleメソッドを実行すると、グラフに設定したすべての書式変更がリセットされて、テーマの標準書式に戻ります。
書式をすべてリセットする
Sub Sample()
ActiveSheet.ChartObjects(1) _
.Chart.ClearToMatchStyle
End Sub
実行例


MarkerStyleプロパティ
Chart.SeriesCollection.Item.MarkerStyle
折れ線グラフのマーカーを設定するには、各系列のMarkerStyleプロパティにマーカーを表す定数を指定します。主な定数は、表の通りです。
表●マーカーを指定するための主な定数
■ |
xlMarkerStyleSquare |
◆ |
xlMarkerStyleDiamond |
▲ |
xlMarkerStyleTriangle |
× |
xlMarkerStyleX |
* |
xlMarkerStyleStar |
● |
xlMarkerStyleCircle |
+ |
xlMarkerStylePlus |
折れ線グラフ全体にダイヤモンド◆のマーカーを付ける
Sub Sample()
Dim i As Long
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection
For i = 1 To .Count
.Item(i).MarkerStyle =xlMarkerStyleDiamond
Next i
End With
End Sub
実行例

