Showing posts with label vba. Show all posts
Showing posts with label vba. Show all posts

Wednesday, December 30, 2015

Excel VBA: 1行に複数の式を書く

VBAは、: (コロン)で区切り、1行に複数の式が書ける。

cf.
http://oshiete.goo.ne.jp/qa/4821878.html

Excel VBA: On Error ...

On Error 

On Error GoTo line では、エラーが発生するとlineで指定した行ラベルまたは行番号に処理が移ります。
On Error Resume Next では、エラーが発生するとエラーの発生した次の行から処理を続行します。
On Error Goto 0 は、エラー処理ルーチンを無効にします。


cf.
http://officetanaka.net/excel/vba/statement/OnError.htm

Excel 文字列 結合 ダブルクォーテーション

Excel の関数やVBAで、文字列を結合する際には、& で結合する。

例えば、
A1 = "晴天"
B1 = "本日は" & A1 & "なり。"

結果: 本日は晴天なり。

ここで、ダブルクォーテーション " を表示するには、
① Char(34) を使う
② " を 3つ繋げる

という方法がある。ただし、②は値の引用ができない。

例えば、

A1 = "晴天"
B2 = "本日は" & Char(34) & A1 & Char(34) & "なり。"

結果: 本日は"晴天"なり。


A1 = "晴天"
B3 = "本日は" & """ & A1 & """ & "なり。"

結果: 本日は" & A1 & "なり。

cf:
http://www.relief.jp/itnote/archives/003415.php

Monday, December 23, 2013

VBA 変数の有効範囲と有効期間

①プロシージャレベル

Sub .... End Subまでの範囲。

プロシージャレベル変数の宣言には、Subプロシージャ内でDimまたはStaticを使用する。
DimとStaticの違いは有効期間である。

Subプロシージャ内でDim宣言した場合は、Subプロシージャの実行が終了すると値が失われる。

Static宣言した場合は、Subプロシージャの終了後も保持される。
ただし、参照範囲がSubプロシージャ内に限られているので、他のSubプロシージャから参照することはできない。
Staticは、同じプロシージャを繰り返し呼び出す必要がある場合に、Subプロシージャ内の値を保持したまま呼び出したい時に使う。



②モジュールレベル

モジュール内での宣言、使用。(ユーザフォーム、標準モジュール、クラスモジュール)

モジュールレベル変数の宣言には、Privateステートメントを使用するか、またはモジュール内(Subプロシージャの外)でDimを使用する。
いずれも参照範囲および有効期間は同じ。

各モジュール内では、どのプロシージャからでも参照可能。
モジュール変数は、Subプロシージャが終了しても変数が再定義するまで値が保持される。例えば、ユーザフォームを表示している間は値が保持される。



③プロジェクトレベル

プロジェクトの全体。

変数の宣言には、Publicステートメントを使用する。標準モジュール内で宣言する。
有効期間は、モジュールレベル変数と同じ。

ユーザフォーム内で宣言したプロジェクトレベル変数は、標準モジュール内では参照できない。



Source: Excel VBA コーディング・テクニック 間 顕次 p.167

Sunday, December 22, 2013

Excel VBAコードを見られないようにする

コードを見られたくない場合には、
VB Editorの
 ツール → VBA Projectのプロパティ
  → 保護タブ → プロジェクトを非表示用にロックするにチェック
ここでパスワードを指定する。