8-03.ユーザーフォームの操作:ユーザーフォームを閉じるには?

Unloadステートメント

Unload ユーザーフォーム名 / Unload Me

ユーザーフォームを閉じるには、Unloadステートメントを使います。Unloadステートメントは、閉じるユーザーフォームの名前を引数に指定します。ただし、一般にユーザーフォームは、コマンドボタンなどによって“自分自身”を閉じることが多いです。そこで、ユーザーフォームの“自分自身”を表すMeというキーワードを使って閉じる方法が便利です。

 次のサンプルでは、「CommandButton1」という名前の「OK」ボタンをクリックしたときのイベントとして、「自分自身を閉じる」という操作を指定しています。


「CommandButton1」をクリックしたら、ユーザーフォームを閉じる

Private Sub CommandButton1_Click()

Unload Me

End Sub

 

実行結果。「OK」ボタンのクリックで閉じる

 

2022年9月17日

8-02.ユーザーフォームの操作:ユーザーフォームを表示するには?

ユーザーフォームを表示するには?

Showメソッド

ユーザーフォーム.Show

デザインしたユーザーフォームを画面に表示するには、Showメソッドを使います。UserFormオブジェクトは、ユーザーフォームの名で指定すればOKです。引数に何も指定しないと、既定値では「モーダル(modal)」な状態で表示されます。

モーダルなユーザーフォームは、ユーザーフォームを閉じるまでExcel で他の操作ができません。閉じるには、右上隅の「×」ボタンを押します。

 


「UserForm1」を開く

Sub Sample1()

UserForm1.Show

End Sub

 

実行結果

2022年9月16日

8-01.ユーザーフォームの操作:ユーザーフォームを作るには?

ユーザーフォームを作るには?

VBEは、ユーザーフォームをデザインする機能も備えます。

「挿入」メニューの「ユーザーフォーム」を選ぶと、プロジェクトエクスプローラーに「UserForm1」といったフォームが追加され、右側にそのデザイン画面が開きます(図1)。「ツールボックス」からパーツを選んでフォーム上をドラッグすれば、フォーム

上にボタンや文字列(ラベル)、入力欄(テキストボックス)などを自由に配置できます。

 フォームのパーツを操作したときに実行する機能を記述するには、デザイン画面でパーツをダブルクリックします。すると、パーツを操作したときに実行するマクロ(イベントマクロと呼ぶ)を書く場所が現れます(図2)。再びデザイン画面に戻るには、「UserForm1」などのアイコンをダブルクリックします。

 

図1●「挿入」→「ユーザーフォーム」を選ぶと、「UserForm1」が追加されて、フォームのデザイン画面が開く

 

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

2022年9月16日

7-15.グラフの操作:第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

 

実行例

 

 

2022年9月16日

7-14.グラフの操作:一部だけグラフの種類を変えるには?

Seriesオブジェクト、ChartTypeプロパティ

Chart.SeriesCollection.ChartType

一部の系列だけグラフの種類を変えるには、変更したいSeriesオブジェクトを指定して、ChartTypeプロパティにグラフの種類を表す定数を指定します。


1つ目の系列だけ折れ線グラフにする

Sub Sample()

ActiveSheet.ChartObjects(1).Chart _

.SeriesCollection(1).ChartType = xlLine

End Sub

 

実行例

 

2022年9月16日

7-13.グラフの操作:グラフの種類を変えるには?

ChartオブジェクトのChartTypeプロパティ

Chart.ChartType

グラフ全体の種類を変更するには、ChartオブジェクトのChartTypeプロパティに、グラフの種類を表す定数を指定します。

 次のサンプルコードでは、棒グラフを円グラフに変更した上で、凡例をグラフの下に表示させています。


円グラフをに変更して凡例を表示

Sub Sample()

With ActiveSheet.ChartObjects(1).Chart

.ChartType = xlPie

.HasLegend = True

.Legend.Position = xlLegendPositionBottom

End With

End Sub

 

実行例

 

 

2022年9月16日

7-12.グラフの操作:軸の最小値/最大値を設定するには?

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

 

実行結果

 

 

 

2022年9月16日

7-11.グラフの操作:円グラフの一部を切り離すには?

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

 

実行例

 

2022年9月16日

7-10.グラフの操作:書式をすべてリセットするには?

ChartオブジェクトのClearToMatchStyleメソッド

Chart.ClearToMatchStyle

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


書式をすべてリセットする

Sub Sample()

ActiveSheet.ChartObjects(1) _

.Chart.ClearToMatchStyle

End Sub

 

実行例

 

2022年9月16日

7-09.グラフの操作:マーカーを設定するには?

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

 

実行例

 

 

2022年9月16日