多変量解析やヒストグラム

Excelで多変量解析やヒストグラムの作成ができます。

方法はツールメニューのアドインにて分析ツールを登録します。

ツールの分析ツールを選択すると分析方法が選択できます。

回帰分析でたとえば

 yn=a*un+b*vn+c*wn+dのような3つの変数がある式のa,b,c,dの係数を算出することができます。

詳しくはExcelのヘルプを見てください。

ユーザーフォームを使う

テキストボックスを使って身長を入力すると標準体重を表示するダイアログボックスを作成する。

BMI法で 22*身長(m)*身長(m)で標準体重を算出します。

ユーザーフォームは、メニューの ツール・マクロ・Visual Basic Editorを選択してVisual Basicを起動します。

メニューの 挿入・ユーザーフォームを選択します。

下記が作成されたユーザーフォームです。これにプログラムを組み合わせます。

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub TextBox1_Change()
Dim l As Double
l = TextBox1.Value / 100
Label3.Caption = "標準体重は" + Str(22 * l * l) + "kgです"
End Sub

上記がユーザーフォームのコードです。

CommandButton1_Clickは、終了ボタンが押されたときに呼び出せれ、ユーザーフォームを終了させます。

TextBox1_Changeは、TextBox1が変更されたときに呼び出され、TextBox1.Valueで値を取り出して標準体重を計算してLabel3に書き込みます。

このユーザーフォームの実行は、Visual Basicのメニュー 実行・ユーザーフォームの実行で行います。実行結果は下記のとおりです。

ちなみに、マクロから呼び出すには、 UserForm1.Show でよびだせます。

ユーザーフォームで計算された値を、シートに書き込むには、

Worksheets("定数").range("A1").value=22 * l * l    '定数シートの A1セルに書き込む

range("A1").Value=22 * l * l '現在のシートのA1セルに書き込む

Cells(2,1).value=22 * l * l '現在のシートのB1セルに書き込む

などがあります。

コンボボックスを使って性を選ぶとその性を横に表示するダイアログボックスを作成する。

Private Sub ComboBox1_Change()
Label1.Caption = ComboBox1.Value
End Sub
Private Sub UserForm_Initialize()
ComboBox1.AddItem "鈴木"
ComboBox1.AddItem "佐藤"
ComboBox1.AddItem "田中"
ComboBox1.AddItem "山本"
ComboBox1.AddItem "渡辺"
End Sub

UserForm_Initializeは、ユーザーフォームが初期化されるときに呼び出されます。

コンボボックスの内容は、AddItemを使って登録します。

ComboBox1_Changeは、コンボボックスで選択された時、呼び出されます。

オプションボタンを使って、性別を選択して、下に性別を表示します。

Private Sub OptionButton1_Click()
Label1.Caption = "私は、gentleman"
End Sub

Private Sub OptionButton2_Click()
Label1.Caption = "私は、women"
End Sub

ユーザーフォームを表示したときにチェックされるオプションボタンをプログラムで決めるには、UserForm_Initialize()のなかで、OptionButton1.Value=Trueとします。同様に、どのボタンが押されているかチェックするにはプロパティValueがTrueになっているものをチェックすればできます。

ヘルプファイルのパスをプログラムで任意に指定する。 H15.12.24

ヘルプファイルのパスは、プロジェクトプロパティで絶対パスでしか指定できないので、xlsファイルを移動させるとヘルプが表示されなくなります。xlsファイルと同じフォルダーにヘルプファイル(sp.hlp)を置いた場合のVBAでの指定方法は下記のとおりです。(Excel97でも動作可能)

Application.VBE.VBProjects(1).HelpFile = ActiveWorkbook.Path + "\sp.hlp"