« メーラーを起動する | メイン | Imageボタンを作成する »

名前を使う

“名前”なんていうお題をもらいました。例によって“名前”関連マクロを紹介します。

名前関連では何と言ってもCallByNameが秀逸です。
普通のVBAでは、プロパティとかメソッドはピリオドで修飾して使用しますが、
CallByNameを使えば、関数として使用できるのです。

サンプルをみてください。


Sub 名前を使う()

MsgBox ("現在のシート名:" & CallByName(ActiveSheet, "NAME", VbGet))
CallByName ActiveSheet, "NAME", VbLet, "TEST2"
Cells(2, 2).Name = "指定セル"
CallByName Evaluate("指定セル"), "SELECT", VbMethod

Dim RNG As Range

Set RNG = CallByName(Evaluate("指定セル"), "OFFSET", VbGet, 1, 1)
MsgBox Evaluate("指定セル").Address & vbNewLine & RNG.Address
Names(1).Delete

End Sub

はじめの行のCallByName(ActiveSheet, "NAME", VbGet))は
ActiveSheetのnameプロパティの内容を取得します。
普通に書くと
ActiveSheet.Name
となります。

ちょっとまどろっこしい書き方ですが、かなり融通が利きますね。

次の CallByName ActiveSheet, "NAME", VbLet, "TEST2" は
普通に書くと
ActiveSheet.Name = "TEST2"
となります。

Cells(2, 2).Name = "指定セル" というのはセル(2,2)に名前をつけるコードです。

CallByName Evaluate("指定セル"), "SELECT", VbMethod のなかで
名前の実態を指定するためにEvaluateを使用しています。これを普通に書くと
Evaluate("指定セル").Selectとなります。
このようにCallByNameはメソッドとしても使用できます。

次の CallByName(Evaluate("指定セル"), "OFFSET", VbGet, 1, 1) は
普通に書くと
Evaluate("指定セル").Offset(1,1)
となりますが、引数を指定することも可能です。

なんかダイナミックに使用できそうですね。

最後のNames(1).Deleteは後片付けです。
セル(2,2)に付けた“指定セル”という名前を削除します。

ひとつ前の投稿は「メーラーを起動する」です。
次の投稿は「Imageボタンを作成する」です。

トラックバック

このエントリーのトラックバックURL:
http://www.xillion.net/mova/mt-tb.cgi/92

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2004年06月05日 00:00に投稿されたエントリーのページです。

メインページアーカイブページも見てください。

Powered by
Movable Type 3.34