2020-08-01から1ヶ月間の記事一覧
クラスモジュールに関する小ネタです。VBAについての意見のなかでよく目にするのが、「コンストラクタ(Class_Initializeプロシージャ)に引数を設定できなくて困る」です。これがどういう意味なのか、どう対処すればよいかを、手短に説明していきます。
VBAにおける隠蔽について考察します。隠蔽とは「2つのPropertyプロシージャによって変数を包み、代入と参照に何らかの制約をつけること」です。VBAにおいて隠蔽はそこまで重要でなく、むしろ隠蔽のないクラスの利便性に着目することが大事です。
プロシージャの種類である、Property LetとProperty Setの違いを解説します。両者とも、プロパティの取得・設定を対となる2関数で行う仕組みのうちの、「値の設定」を担うプロシージャですが、対象とするプロパティがオブジェクトかどうかが異なります。
プロシージャの種類である、FunctionとProperty Getの違いを解説します。どちらも、任意の数の引数を受け取り、1つの値を返します。Propertyの本来の目的である、同じ名前のProperty Let/Setプロシージャを用意できる点が、最も大きな違いです。
完成品の全体が見たい!という方のための、完成品マクロのサンプルコードです。今回のテーマは「データシート⇒帳票を出力」です。クラスの基本的な書き方を使って実装しておりますので、クラスを勉強し始めた方は、参考にしてみてください。
処理ごとの解説ではなく、完成品の全体が見たい!という方のための、完成品マクロのサンプルコードです。今回のテーマは「データシート⇒帳票を出力」です。初級者の方にも扱えるよう、この処理を動かすための最低限の書き方をしております。
完成品の全体が見たい!という方のための、完成品マクロのサンプルコードです。今回のテーマは「データシート⇒帳票を出力」です。関数(プロシージャ)分割を使って、メンテナンス性を意識したコードにしておりますので、参考にしてみてください。
このブログの記事が50に到達しました。令和元年12月1日にスタートしたブログですので、およそ8ヶ月半での到達です。やっと書き慣れてきましたので、ペースを上げていきたいですね。いつもご愛読いただいている皆様には、この場を借りてお礼申し上げます。
Excelのデータ処理をマクロで自動化しようと思ったら、必ずついて回るのが「最終行の自動取得」です。データの処理がどんなものであれ、まずはデータがどこまで入っているかを確認して、処理を実行する範囲を決めないといけません。
セルの数式をVBAで入力するための「Formulaプロパティ」の使い方を解説します。Range("D10").Formula = "=SUM(D4:D9)"のように、数式をRangeオブジェクトのFormulaプロパティに代入することで、数式をVBAから入力することができます。
ワークシート関数をVBA上で計算するWorksheetFunctionオブジェクトの使い方を解説します。自分でコードを書くと大変だけど、関数だと1発で書けるというメリットに加え、シート関数は自分で書くより圧倒的に高速です。積極的に使っていきましょう。
VLOOKUPの高速化手法は、《簡単》データが連続していることを活用した計算スキップ法と、《超高速》ソート済であることを活用した近似一致法の2種類があります。どちらも使いこなせばとても便利ですので、是非習得していってください。
セル範囲の指定は、簡単に書こうと思えば書けるので、普段はあまり考えない部分かもしれません。ですが読みやすさや書きやすさを追求しようと思えば、とても考えがいのある処理ですので、自分の知識の確認の意味でも、ちょっと確認してみましょう。
「外枠が実線で中が細い点線の格子罫線」を自動で引くマクロを紹介します。普通の格子罫線は印刷すると太くて気になりますが、一番細い点線を使うと、印刷時は点線ではなく細い直線になります。表をキレイに印刷したいときは、この設定で罫線を引きましょう。
選択中のセル範囲を、1枚の用紙にクイック印刷するマクロを紹介します。「選択範囲を印刷範囲に⇒上下左右の余白を0に⇒水平方向をセンタリング⇒シートを1ページに印刷に⇒範囲が横長なら用紙を横に⇒印刷する」を一括で行うマクロです。
本ブログで紹介している、汎用マクロ・便利ツールは、特に頻出の処理を、共通の関数として抽出して使っています。共通関数のソースコードと解説を以下に記しておきますので、コードの説明が読みたい方はご利用ください。