ハンガリアンセル変数で 楽々にメソッド名を 補完しよう

Pocket

ハンガリアンセル変数で 楽々にメソッド名を 補完しよう
ハンガリアンセル変数で楽々にメソッド名を補完しよう

序文

はい。

このサイトでは、以前、変数名にハンガリアンという変数名命名法を使って日本語変数名をうまく扱おう、という主旨の解説も行いました。

今回は、セルのメソッドを全体的にハンガリアンにしたセルをあらかじめ「エクセルVBA日本語化」の中に組み込みました。

本日は、その使い具合を解説します。

なお、本日の解説の内容を実行するには、「エクセルVBA日本語化」ver0.20.0以上が必要です。

以下のダウンロードページからダウンロードされるか、Vectorのホームページからダウンロードされてください。

ダウンロードページのURL

 

VectorページのURL

 

本日の実行結果

本日の課題では、“A1:C3”までのセル範囲から、“B1:B3”のセル範囲を「集合差」で除外した後に、選択状態にします。

実行結果は以下のようになります。

実行結果
実行結果

“A1:C3″から、”B1:B3″が除外されて選択されていますね。

ハンガリアンセルの宣言

まずは、サブルーチンとよばれる、VBAの実行に使う最小単位の枠をつくりましょう。

最小単位の枠は以下のようになります。

最小単位の枠(サブルーチン)
最小単位の枠(サブルーチン)

または、以下からコピペされてもかまいません。

Public Sub ハンガリアンセルテスト01()

End Sub

では、さっそくハンガリアンセルを使いましょう。

まずは、変数の宣言です。
まだ、変数の値は代入しません

dim変数宣言キーワードを入力後、変数名を入力し、「as」の後に変数の型を入力します。

変数の型を入力する際は、「hng」まで入力すると、補完候補が現れます。

ここでは、「hngハンガリアンセルv1」を選択し、TABキーを押下して、「hngハンガリアンセルv1」を確定します。

「hng」まで入力し「hngハンガリアンセル」の補完を行う
「hng」まで入力し「hngハンガリアンセル」の補完を行う

もう一つハンガリアンセル型の変数を作っておきましょう。

先ほどのやり方と同様に行ってください。

もう一個ハンガリアンセルを宣言する
もう一個ハンガリアンセルを宣言する

2つのハンガリアンセルの使用用途は以下のようになります。

  • 1つめのハンガリアン ・・・ 全体のセル範囲
  • 2つめのハンガリアン ・・・ 集合差で引き算するセル範囲

また、以下のコードをコピペされてもかまいません。

Public Sub ハンガリアンセルテスト01()
    Dim w_hngハンガリアンセル As hngハンガリアンセルv1
    Dim w2_hngハンガリアンセル As hngハンガリアンセルv1
    
End Sub

ハンガリアンセルへ値の代入

次に、変数宣言したハンガリアンセルに値を代入してみましょう。

ハンガリアンセルはオブジェクトと呼ばれる種類の変数で、値の代入には、「Set」キーワードを使います。

そして、「=」を入力後、ハンガリアンセルの値を取得するために、「g_道具」を呼び出します。

g_」まで入力し、CTRL+スペースで補完できます。

「g_」まで入力し、CTRL+スペースで「g_道具」と補完
「g_」まで入力し、CTRL+スペースで「g_道具」と補完

次に。「g_道具」の持っている関数で、ハンガリアンセルの値を生成します。

「g_道具.」まで入力した後、「hng」と入力してください。

「hngハンガリアンセル」と「hngハンガリアンセルv1」が補完候補に現れます。

「hngハンガリアンセル」の方は、実験的なものですので、無視されてください。

補完候補から「hngハンガリアンセルv1」を選択し、TABキーを押下して補完を確定します。

「g_道具.」の後で「hng」と入力し、ハンガリアンセルを補完
「g_道具.」の後で「hng」と入力し、ハンガリアンセルを補完

次にハンガリアンセルの値の持つセル範囲を指定しましょう。

このあたりは、Rangeオブジェクトと同様です。

「hngハンガリアンセルv1」の後に左丸括弧を入力すると、「hngハンガリアンセルv1」にどのような引数を指定できるのか、黄色い付箋紙で説明が出ます。

ハンガリアンセルにセル範囲を設定
ハンガリアンセルにセル範囲を設定

ここでは、「hngハンガリアンセルv1」のセル範囲を以下のようにします。

  • 1つめのハンガリアン ・・・ 全体”A1:C3″のセル範囲
  • 2つめのハンガリアン ・・・ 集合差で引き算するセル範囲”B1:B3″

指定後は以下のような画面になります。

2つのハンガリアンセルに、セル範囲を設定した画面
2つのハンガリアンセルに、セル範囲を設定した画面

ここまでのコードは、以下からコピペされてください。

Public Sub ハンガリアンセルテスト01()
    Dim w_hngハンガリアンセル As hngハンガリアンセルv1
    Dim w2_hngハンガリアンセル As hngハンガリアンセルv1
    
    Set w_hngハンガリアンセル = g_道具.hngハンガリアンセルv1("A1:C3")
    Set w2_hngハンガリアンセル = g_道具.hngハンガリアンセルv1("B1:B3")
    
   
End Sub

ハンガリアンセルで集合差

次にハンガリアンセルで、セル集合集合差をとってみます。

“A1:C3” のセル集合から “B1:B3” のセル集合を引いた集合を求めてみます。

まず、“A1:C3”のセル集合を持っている「w_hng」で始まる集合を呼び出します。

「w_hng」まで入力し、CTRL+スペースを押下します。

すると、「w_hngハンガリアンセル」という変数名が補完されます。

ワーク変数ハンガリアンセルを「w_hng」まで入力し、CTRL+スペースで補完
ワーク変数ハンガリアンセルを「w_hng」まで入力し、CTRL+スペースで補完

次に、「w_hngハンガリアンセル」に「.(ピリオド)」を入力し、「syugo」と入力します。

すると、ハンガリアンセルが持つ「syugo集合差」というメソッド名が補完候補に挙げられますので、「syugo集合差」を選択して、TABキーを押下し、補完を確定します。

続けて、「.(ピリオド)を入力した後、「syugo」まで入力して、「syugo集合差」メソッドを補完
続けて、「.(ピリオド)を入力した後、「syugo」まで入力して、「syugo集合差」メソッドを補完

次に、一つ半角空白を入力し、「syugo集合差」の引数のヘルプを表示します。

下図の黄色い付箋紙がヘルプです。

ここでは、「hngハンガリアンセルv1」型の変数を指定するようですね。

そんため、集合差の引き算するセル集合 “B1:B3” を持つ変数「w2_hngハンガリアンセル」を指定します。

w2_hng」まで入力し、CTRL+スペースを押下すると、「w2_hngハンガリアンセル」まで補完されます。

集合差の差を取る対象の2つめのハンガリアンセルの変数名を「w2_hng」まで入力。
集合差の差を取る対象の2つめのハンガリアンセルの変数名を「w2_hng」まで入力。

下図が、「w2_hngハンガリアンセル」まで補完された結果です。

「w2_hng」まで入力した後、CTRL+スペースで補完し、2つめのハンガリアンセルの変数名にする
「w2_hng」まで入力した後、CTRL+スペースで補完し、2つめのハンガリアンセルの変数名にする

これで、セル集合 “A1:C3” からセル集合 “B1:B3”引き算されました。

引き算の結果は、「w_hngハンガリアンセル」に入っています。

ここまでのコードは以下の通りです。コピペされてください。

Public Sub ハンガリアンセルテスト01()
    Dim w_hngハンガリアンセル As hngハンガリアンセルv1
    Dim w2_hngハンガリアンセル As hngハンガリアンセルv1
    
    Set w_hngハンガリアンセル = g_道具.hngハンガリアンセルv1("A1:C3")
    Set w2_hngハンガリアンセル = g_道具.hngハンガリアンセルv1("B1:B3")

    w_hngハンガリアンセル.syugo集合差 w2_hngハンガリアンセル

End Sub

集合差したセル範囲を「選択」

最後に、集合差したセル範囲を「選択」してみましょう。

w_hng」まで入力し、CTRL+スペースを押下し、補完させます。

「選択」メソッドを使う1つめのハンガリアンセルの変数名を「w_hng」まで入力
「選択」メソッドを使う1つめのハンガリアンセルの変数名を「w_hng」まで入力

次に、「hngハンガリアンセル」の「sentaku選択」メソッドを呼び出しましょう。

「w_hngハンガリアンセル」の後に「.(ピリオド)」を入力し、「sentaku」と入力します。

すると、下図のように補完候補が現れます。

ここでは、「sentaku選択」を選択し、TABキーを押下して、補完を確定させます。

「.(ピリオド)」を入力後、「sentaku選択」メソッドを補完するために、「sentaku」まで入力
「.(ピリオド)」を入力後、「sentaku選択」メソッドを補完するために、「sentaku」まで入力

「hngハンガリアンセル」型の「sentaku選択」メソッドが補完されました。

これで、「w_hngハンガリアンセル」の持つセル範囲がエクセル上で選択されます。

「sentaku選択」を選び、TABキーを押下して、「sentaku選択」メソッド名を確定
「sentaku選択」を選び、TABキーを押下して、「sentaku選択」メソッド名を確定

ここまでのコードは、以下のようになります。コピペされてください。

Public Sub ハンガリアンセルテスト01()
    Dim w_hngハンガリアンセル As hngハンガリアンセルv1
    Dim w2_hngハンガリアンセル As hngハンガリアンセルv1
    
    Set w_hngハンガリアンセル = g_道具.hngハンガリアンセルv1("A1:C3")
    Set w2_hngハンガリアンセル = g_道具.hngハンガリアンセルv1("B1:B3")

    w_hngハンガリアンセル.syugo集合差 w2_hngハンガリアンセル
    
    w_hngハンガリアンセル.sentaku選択

End Sub

最後に、「w_hngハンガリアンセル」と「w2_hngハンガリアンセル」にNothingを代入して、初期化しましょう。

Nothnigを代入すると、「w_hngハンガリアンセル」と「w2_hngハンガリアンセル」が使っていたメモリが解放されて、メモリ空き容量が浮くようになります。

後始末に、ハンガリアンセルの値を「Nothing」にし、メモリを解放
後始末に、ハンガリアンセルの値を「Nothing」にし、メモリを解放

ここまでのコードは以下の通りです。コピペされてください。

Public Sub ハンガリアンセルテスト01()
    Dim w_hngハンガリアンセル As hngハンガリアンセルv1
    Dim w2_hngハンガリアンセル As hngハンガリアンセルv1
    
    Set w_hngハンガリアンセル = g_道具.hngハンガリアンセルv1("A1:C3")
    Set w2_hngハンガリアンセル = g_道具.hngハンガリアンセルv1("B1:B3")

    w_hngハンガリアンセル.syugo集合差 w2_hngハンガリアンセル
    
    w_hngハンガリアンセル.sentaku選択

    Set w_hngハンガリアンセル = Nothing
    Set w2_hngハンガリアンセル = Nothing

End Su

実行結果

それでは、本日制作した日本語VBAコードを実行して実行結果を得ましょう。

エクセルに戻って、「開発」タブを開き、「マクロ」ボタンをクリックします。

「開発」タブ→「マクロ」をクリック
「開発」タブ→「マクロ」をクリック

すると「マクロ」ダイアログが表示されます。

ここで、「マクロ名」の中から、「ハンガリアンセルテスト01」を選択し、「実行」ボタンをクリックします。

サブルーチン名「ハンガリアンテスト01」を選択し、「実行」
サブルーチン名「ハンガリアンテスト01」を選択し、「実行」

実行結果は以下のようになります。

“A1:C3” セルから “B1:B3” セルが除外されて(集合差されて)、範囲選択されていますね。

実行結果
実行結果

ハンガリアンセルのメソッドの確認の方法

ハンガリアンセルにはどのようなメソッドがあるのでしょう?

それを事前に確認する方法があります。

それが、VBAに付属の「オブジェクトブラウザー」です。

オブジェクトブラウザーでは、メソッドを一覧表示できます。

下記ページも、参照されてみてください。

「オブジェクトブラウザーを開こう」URL

オブジェクトブラウザーを開くには、VBAエディタ画面で「メニュー」→「表示」→「オブジェクトブラウザー」とメニューをたどって、クリックする必要があります。

VBAエディタ画面で「メニュー」→「表示」→「オブジェクトブラウザー」
VBAエディタ画面で「メニュー」→「表示」→「オブジェクトブラウザー」

オブジェクトブラウザーを開いた後は、たくさんのメソッドが一覧されます。

そこで、検索して絞り込んで表示してみましょう。

検索」ボックス(虫眼鏡アイコンのあるところ)に、「ハンガリアン」と入力し、虫眼鏡アイコンをクリックします。

「検索」ボックスで、「ハンガリアン」と入力し、検索した結果
「検索」ボックスで、「ハンガリアン」と入力し、検索した結果

上図のようにライブラリ「Excel_VBA_JP_vX_XX」のクラス「hngハンガリアンセル」の箇所をクリックすると、画面真ん中あたりに、「hngハンガリアンセル」のメソッド一覧が表示されます。

それぞれのメソッド名をクリックすると、画面下部のグレーの箇所に、メソッドの引数なども表示されます。

一度、一覧で「hngハンガリアンセル」のメソッド名を確認しておくと、後々便利そうですね。

まとめ

皆さん、大変お疲れ様でした。

ここまで読んで頂いて誠にありがとうございました。

本日の学びを以下にまとめます。

  • 変数宣言で、ハンガリアンセルの変数名は自由に付けていい
  • 変数宣言で、As の後は、「hng」まで入力し、補完候補を表示させ、「hngハンガリアンセルv1」を選択すると、ハンガリアンセル型の変数となる。
  • ハンガリアンセルの「syugo集合差」メソッドを使うと、セル集合とセル集合の集合差を得ることができる。
  • ハンガリアンセルの「sentaku選択」メソッドを使うと、エクセル上で、セル集合(セル範囲)を選択することができる。
  • オブジェクトブラウザー」でハンガリアンセルのメソッド名の一覧を確認できる

今回は、ハンガリアン集合差、エクセル上でセル範囲選択など、なかなか難しい概念が出てきました。

しかし、これらを使うと、より簡単・便利にエクセルVBA、日本語VBAを活用することができます。

ぜひ、この機会に覚えられてください。

それではー またー (^_^)/

The following two tabs change content below.
KaBA@フリーランス修行中

KaBA@フリーランス修行中

こんにちは!IT業界で勤めて17年くらい務めています。プログラミング大好きやろーです。 自分も独学でC言語を覚えIT会社に就職しました。その後紆余曲折を経て、VB6.0、VBA、Perl、C#、HTML、CSS、JavaScript、PHPなどを覚えていきました。全部C言語の独学時の経験がベースとなって、学習曲線が良いカーブを描いていました。 情報工学科を出ていなくても、独学でエンジニアは育つことができると思います! このブログで皆さんがプログラミングに興味を持たれるのを心待ちにしています! 頑張って覚えられてください!よろしくお願いします。 趣味は読書で、小宮一慶さんや松下幸之助さんなど著名人の本を読んでいる他、赤川次郎さんの三毛猫ホームズシリーズ司馬遼太郎吉川英治さんの三国志などが好きです。