メモ: クラスの定義

概要

・VBAでクラスを定義する方法。忘れそうなのでメモ

標準モジュール

標準モジュール・クラスモジュールにそれぞれモジュールを追加。
クラスの名前はここでは「ClassTest」とするのでクラスモジュールの名前もClassTestに

クラスモジュール

メンバ変数の命名はどうやら頭に「m_」をつける流派があるようなのでとりあえずその方法で。
アンダーバーから始める変数を定義できないようにしたVBAは即効で埋めるように。

メンバ変数に直接アクセスはできない(?)ので、メンバ変数を返すだけのメソッド(getValue)を用意する

文字列日付を日付型に直す

概要

時系列データを持ってくるとたまに日付が文字列として記入されている.
そのためvlookupなどで指定した日のデータを取ってこようとすると(#^ω^)ビキビキ
ので,それをエクセルの日付型に直すユーザー定義関数を作る

やり方

今回遭遇した日付がこのようなタイプ

1

DD/MM/YYYYという形式をとっており,かつ月や日付が1桁だったり2桁だったりするため,left関数やmid関数が使えない.

正規表現を使う

“/”スラッシュで切り分ければ良いよねという方針で参ります.
まずはVBAで正規表現を使えるようにするため,Visual Basicから「ツール」→「参照設定」で「Microsoft VBScript Regular Expresssion 5.5」にチェックを付けてOK

2

VBA

使う

セルを指定すれば日付型で返ってくる

3

選択範囲だけ再計算する

概要

・エクセルが重すぎるのでブックごと再計算とかやってられない(再計算は手動になっている前提)
・選択範囲だけ再計算するマクロを組む
・ついでにctrl + shift + F9のショートカットを割り当てる

VBA内容

ThisWorkbook

標準モジュール

解説

ThisWorkbookの方に,エクセルファイルのオープンと同時にショートカットを割り当てる処理.
標準モジュールの方には,選択範囲を再計算する処理を記述

2つのモジュールに書き分けなければいけないのがめんどい

参考

エクセルで選択範囲だけ再計算するようにするマクロ | Suinasia
http://suin.asia/2008/12/17/recalculate-macro.html

Application.OnKey メソッド (Excel)
http://msdn.microsoft.com/ja-jp/library/office/ff197461.aspx

Excelじゆうちょう 標準モジュールでイベント(もどき)
http://likep.blog63.fc2.com/blog-entry-106.html