11−1では、ブックを閉じる前に上書きをするプロシージャを作ったが、ここでは、ブックを開くと、自動的にフォームを開く方法を紹介する。(「VBテックラボ&瀬戸遥著、10日でおぼえるExcel VBA入門教室(2000対応)、翔泳社刊、1999、pp.348-349)を参照した。へルプでは見つからなかった。その理由は古いバージョンらしい。「Auto_Openプロシージャは標準モジュールに作成する必要があります。」とある。 「Excel VBA FAQ トラブル編」参照)
1)「採点用フォームを開く」プロシージャの名前を、Sub Auto_Open()プロシージャに変更する。
2)フォームの初期化プロシージャで、最初のセルの選択を追加すれば、現在のActiveセルがどこにあっても、第1レコードの得点セルを指せる。
Private Sub UserForm_Initialize() ・・・ Range("C8").Select ' レコード1の得点の選択(Auto_Open()内でも可) データの読み込み End Sub
上の画面は、Excelでのマクロ実行結果で、下の画面は、ExcelのコードをWordのコードにコピーして、オブジェクトの変更と非互換の変更(「コメント」プロシージャの削除を含む)後に実行したものを示す。
以下は、「VBテックラボ&瀬戸遥著、10日でおぼえるExcelVBA入門教室(2000対応)、翔泳社刊、1999、pp.213-250)を参照した。
図形描画の機能は、WordやExcel,PowerpointなどMS Officeで共通の標準機能である。従って、オブジェクト名をActiveSheetからActiveDocumentに変えれば、WordのVBAでも動作するが、一部メソッドやプロパティに非互換がある。(テキストボックスの文字列の扱い、色の指定方法がRGBなど)
オンラインヘルプでは、「Microsoft Visual Basicのヘルプ」の「Visual Basicの使い方」の「イベント、ワークシート関数、および図形」の「図形で作業する (描画オブジェクト)」に概要の説明がある。それぞれのオブジェクトなどにはハイパーリンクがあるので、クリックして参照できる。
実習では、新しいブックを開き、マクロの記録により、図形描画とそのプロパティ変更を行う。その後、記録されたコードの学習をする。コードが記録された結果のマクロ(VB Editorでのプロシージャ内をクリックし)を「ステップイン」(F8)して、別の並べたワークシートでの動作を確認しながら、図形描画のオブジェクト、メソッド、プロパティとプログラムの方法を学習する。必要に応じて、調べたいオブジェクト名やプロパティ名をクリックしてF1キーを押せば、VBのヘルプ画面が出るので、それで詳細の仕様や使用例、オブジェクトの構造(「対象」をクリック)を確認すること。
3次元の柱体の作り方は、以下の手順による
・・・ ActiveSheet.Shapes.AddShape(msoShapeRectangle, 53.25, 121.5, 108#, 80.25). _ Select Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10 Selection.ShapeRange.Fill.Visible = msoTrue Selection.ShapeRange.Fill.Solid Selection.ShapeRange.Line.DashStyle = msoLineDash Selection.ShapeRange.Line.Weight = 0.25 Selection.ShapeRange.Line.Visible = msoTrue Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.ForeColor.SchemeColor = 17 Selection.ShapeRange.Line.Visible = msoTrue Selection.ShapeRange.AutoShapeType = msoShape8pointStar Selection.ShapeRange.AutoShapeType = msoShapeOval Selection.ShapeRange.ScaleWidth 1.01, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleHeight 1.32, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.Shadow.Type = msoShadow6 Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD14 ・・・
セルのコメントは、セルをポイントすると、説明のコメント ボックスが表示されるものである。
図形描画と同じシートでよいが、マクロ記録により、コメントの作成とそのプロパティの変更を行う。この確認(ステップ実行)で、VBAのコードとの関係を学習する。
なお、コメントの追加では、すでにコメントがあるとエラーになる。その時(エラーを出した後で)、コードの変更を行うとよい。エラーでも続行するようにしたい。このようなエラー対策として、後で説明しているが、On Error 文がある。
そのほかにコメントの選択などの追加がある。
On Error GoTo TRAP 'エラー処理で、止まらないようにする。 Range("C2").Select Range("C2").AddComment 'コメントを追加する TRAP: '既に有るときにも、エラーとしないため Range("C2").Comment.Visible = True 'False 枠を表示しておく。このプロシージャの最後で消す Range("C2").Comment.Text Text:="九州職業能力開発大学校:" & Chr(10) & "アビリティ情報コース" Range("C2").Comment.Shape.Select '選択する ・・・
ワードアートも、WordやExcel,PowerpointなどMS Officeで共通の標準機能である。これは、Wordでは、オブジェクト名をActiveSheetからActiveDocumentに変え,最後のRange("I6").Selectを削除したのみで、そのまま動いた。
実習は、図形描画と同じシートでよい。マクロ記録により、ワードアートの作成とそのプロパティの変更を行う。その後、記録されたコードの学習をする。コードの確認は、記録したシートと別のシートでステップ実行をして確認する。
コードの変更など:オブジェクト.AddTextEffect()メソッドの戻り値は、ワードアートオブジェクトであるので、これを受け取って、オブジェクトのnameプロパティに名前を付けて、疎の後では、shape(名前)で参照する。
Set NewArt = ActiveSheet.Shapes.AddTextEffect(msoTextEffect17, "Excell 2000 VBA", "MS P明朝", _ 36#, msoTrue, msoFalse, 146.25, 118.5) NewArt.Name = "WordArt 18" ActiveSheet.Shapes("WordArt 18").Select ・・・
オンラインヘルプ(コメントのプロシージャのerror文字列のなかでクリックしてf1キー、あるいは、VBのヘルプ→目次→ステートメント→M-Z→On Error ステートメント)で、「On Error ステートメント」と「On Error ステートメントの使用例」などを参照のこと。(『On Error ステートメントを使用していない場合に実行時エラーが発生すると、そのエラーは致命的エラーになり、エラー メッセージが表示されてプログラムの実行が停止します。エラー処理ルーチンを指定して、対処します。』)
上のコメントのエラー処理が例である。
(「VBテックラボ&瀬戸遥著、10日でおぼえるExcel VBA入門教室(2000対応)、翔泳社刊、1999、pp.391-395などを参照。)
たくさんの関連するページがある。それらを参照できれば、役に立つものがある。検索エンジンで検索したもののリンク集を作ったが、個別のキーワード(例えば、auto_open()など)で検索してもよいし、Excel VBA FAQ 一覧などの特定のWebサイトのページ内で検索してもよい。
以上