一般的なSubプロシージャやFunctionプロシージャを指定するときは0を指定します。 Sub Sample10() Dim Cnt As Long Cnt = ThisWorkbook.VBProject.VBComponents("Module1"). _ CodeModule.ProcBodyLine("Sample10", 0) MsgBox Cnt End Sub ProcCountLinesプロパティは、指定したプロシージャの行数を返します。 指定する引数はProcBodyLineプロパティと同じです。 ProcCountLinesプロパティは、指定したプロシージャの宣言行(Sub ○○やFunction××など)以前にある空白行やコメント行から、プロシージャの終了行(End SubやEnd Functionなど)までの行数を返します。指定したプロシージャがコードモジュール内
恥ずかしいことにこれしきのコードが解らず,クラスのプロパティに配列を使うときにいつもつまずいていた・・・。以後間違わないようにメモ。解ってしまえばなんでこんなことで悩んでいたのか自分でも不思議だが,バグというのはそういうものである。今まではどうしてもプロパティに配列を使いたいときにはわざわざ値をセットするメソッドを作っていた。 '### hogehoge.cls ### Private mintArrey(0 to 10) as Integer 'プロパティ格納用 モジュールレベル変数(配列) Public Function Hoge() as integer 'メソッド ~省略~ End Function 'プロパティの取得 Public Property Get Arrey(ByVal i as Integer) as Integer '配列の添字を引数にする Arrey = mint
VBA(Visual Basic for Applications)はおそらく,マイクロソフトが想定していた以上に,広く使われてしまったのではないだろうか。そのためマイクロソフトは,VBAのベースであるVB(Visual Basic)をVB 6からVB .NETへと大幅バージョンアップをした際にも,“VBA .NET”とはできずに旧態依然の仕様のまま取り残す格好になってしまった。 VBAはマイクロソフトのオフィス・ソフトが備えているプログラミング言語である。1993年にExcelで初めて搭載された。オフィス・ソフトで手作業で行っていた作業を自動化したり,オフィス・ソフトをフロントエンドとするようなアプリケーションを開発したりカスタマイズしたりするのに使われている。 VBAはWordやPowerPointなどでも利用できるが,最も多く使われているのはExcelにおいてである。すべてのケースで
一般的な正規表現に比べると使用できるメタキャラクタの種類は少ないですが、いくつも条件分岐を重ねるよりは効率的にパターンマッチングできるでしょう。いくつか使用例をご紹介します。 上のような住所録で「東京、横浜、千葉ではない住所を赤字」にするには、次のようにします。 Sub Sample1() Dim i As Long For i = 1 To 8 If Cells(i, 1).Value Like "[!東京,横浜,千葉]*" Then Cells(i, 1).Font.ColorIndex = 3 Next i End Sub Like演算子を使わないなら、次のようになりますね。 Sub Sample2() Dim i As Long For i = 1 To 8 If Left(Cells(i, 1), 2) <> "東京" And _ Left(Cells(i, 1), 2) <>
既にできているWord文書に対して一括して処理をしたいことがあると思います。 表紙に通し番号を入れたり、会社名や担当者名が変わったので置換したり、という場面です。 そのためのマクロを考えてみました。 Sub 複数文書連続処理() Dim files(100) 'フォルダの選択 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "フォルダを選択" .AllowMultiSelect = False If .Show = -1 Then mypath = .SelectedItems(1) & "\" Else Exit Sub End If End With 'ファイルの取得 files(1) = Dir(mypath) i = 1 Do While files(i) <> "" i = i + 1 files(i
これは俗にビットマスク(あるいはビットフラグ)と呼ばれる手法で、次のような利点が有ります。 フィールド数を抑えることが出来る データサイズ(=データベースの肥大化)を抑えることが出来る たとえば Yes/No 型フィールドを使用した場合は、この設問の結果を格納するだけで 7 フィールドを使います。Yes/No 型のフィールドサイズは 2 バイトなので、全体のデータ長は 2 バイト× 7 フィールド=14 バイト/レコードになります(実際には内部管理用のインデックスなどによるプラスアルファが有りますが、ここでは無視します)。 一方ビットマスクを使用した場合、バイト型のフィールドサイズは 1 バイトなので、全体でも 1 バイト/レコードで済んでしまいます。 その差は実に 14:1 です。 しかもこのような設問が 40 個あった場合、Yes/No 型フィールドは単純計算で 280 フィールドを要
NullとEmptyとNothingと空の文字列の違い (Access 97/2000/2002/2003/2007/2010) ツイート VBAでは変数やフィールドに有効な値がない状態や、空の状態を表す値がいくつもあります。 ここでは、それぞれの意味や使用上の注意についてご紹介します。 ■長さ0の文字列("") 文字を1つも含まない文字列 ("") です。 「長さ0の文字列」の名前のとおり、Len関数やLenB関数の引数に指定すると0を返します。 Dim myStr As String myStr = "" Debug.Print Len(myStr) '--> 0 と表示される ■値0の文字列(vbNullString) String型の変数の初期状態を表す値です。vbNullStringという定数で表します。 長さ0の文字列("")と同様に、Len/LenB関数の引数に指定すると 0
Office 2003 のVBAでXMLからC/C++のヘッダファイルを生成するツールを作っているのですが、Office 2003 のVBAではいまだに VB .NET のようにクラスの継承が使えません(涙) しかし、継承が使えないVBAでも Decorator Pattern を使えばクラスに機能を追加することができます♪ VBAでDecorator Patternを使って実装するとき、こんな感じになるでしょうか… (ハンガリアン記法を使っていないと怒られそうですが 汗) ' SomeObjectクラスの実装 Sub DoSomething() ... ' 何かの処理 End Sub ... ' SomeObjectDecoratorクラスの実装 Implements SomeObject Public Delegate As New SomeObject ' 継承の代わりなので最初に作
ここでは、VB のクラスモジュールについて詳しく解説しています。「VB の基本は知ってるけど、クラスとか難しいことはまだ知らない」という人へ。 クラスを理解すれば、プログラミング や VB への理解が深まり、今まで以上にプログラミングが楽しくなると思います。 目次 導入 クラスモジュールを学ぶ前に ... 何をしようとしているのか? 「クラス」とは? 基礎編 クラスモジュールの役割 クラスとオブジェクトの関係、インスタンスとは? プロパティ 前編 プロパティ 後編 メソッド イベント インスタンスの誕生と終焉 Object 型 コラム なぜ“オブジェクト指向”が必要なのか? 標準モジュールにプロパティ ... 小ネタ クラス化のメリット クラス化の留意点 応用編 オブジェクト変数とインスタンスByVal とインスタンス ポリモーフィズム ... オブジェクト同士の契約ポリモーフィズムとイン
今、ExcelのVBAでちょっとしたものを作ってるのですが、コーディング中に急にパフォーマンスが悪くなるという現象が発生したので、原因を調べてみたらCollectionの各要素を処理する場面が問題のようだった。CollectionをFor Eachで周すようにしただけで、さっきの遅さが嘘のように解決してしまった。 本当にFor i = … のループを For Eachに書き換えただけで速くなるのか確信持てなかったし、他の原因も重なった結果かも、という疑惑も拭いきれない状態だったので、ExcelXPでベンチマークを取ってみました。 主要部分 下のLoop_for_indexとLoop_for_eachを比較しました。 'For i = ...版。 各要素を添字指定でアクセスする Public Sub Loop_for_index() Dim dummy As Long Dim i As Lo
VBAでは、変数の命名に関して次のようなルールがあります。(以下、Excel 2007のヘルプより抜粋) 変数名には、文字 (英数字、漢字、ひらがな、カタカナ) とアンダスコア (_) を使うことができます。スペースや記号は使えません。変数名の先頭の文字は、英字、漢字、ひらがな、カタカナのいずれかでなければなりません。同一適用範囲 (スコープ) 内で同じ変数名を複数使うことはできません。また、変数名の長さは、半角で 255 文字以内でなければなりません。 つまり 変数名には文字(日本語を含む)のほか、アンダーバー(_)だけを使えて、そのほかの記号やスペースは使えない 変数名の先頭が数字やアンダーバー(_)ではいけない 同じ適用範囲で同じ名前は使えない 変数名の長さは半角で255文字まで ということですね。 4.は、意識する必要はないでしょう。そんな長い名前を使うことは希でしょうし、もしエラ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く