VBA: 2008年3月アーカイブ
コレクションに、ある値(メンバー)が既に存在するかをチェックする関数
重複チェックなどに便利です。
エラー処理などに使えます。
重複チェックなどに便利です。
Function isMemberOfCollection(col As Collection, query) As Boolean
Dim item
For Each item In col
If item = query Then
isMemberOfCollection = True
Exit Function
End If
Next
isMemberOfCollection = False
End Function
使うときは、
If isMemberOfCollection(myCollection, myValue) Then
MsgBox "エラー:" & vbLf & vbLf _
& "値が重複しています。" & myValue
End
End If
のような形で呼び出します。エラー処理などに使えます。
VBAでMsgBoxを表示すると、OKボタンを押すまで処理が中断してしまうので不便だなーと思っていました。
調べてみたら、教えてGoo!に良いやり方が載っていました。
アプリの処理中に、ユーザにメッセージを伝えるのに使えそうですね。
プログレスバーで進捗表示してもいいんですが、処理が大げさになりがちなので、こっちの方が簡単ですね。
これは便利!
調べてみたら、教えてGoo!に良いやり方が載っていました。
Sub test()
Dim myShell As Object
Set myShell = CreateObject("Wscript.Shell")
myShell.PopUp "ここにメッセージ", 5, "ここにタイトル"
Set myShell = Nothing
End Sub
ExcelのVBAでもPowerpointのVBAでもこのコードで動きます。アプリの処理中に、ユーザにメッセージを伝えるのに使えそうですね。
プログレスバーで進捗表示してもいいんですが、処理が大げさになりがちなので、こっちの方が簡単ですね。
これは便利!
foreachを使ってますか?
初級プログラマに意外と知られていないforeach。
何が便利かというと、
カウンタや添え字(index)を意識せずに、配列の全要素に対してアクセスし、何らかの処理をすることができます。
foreachを使わない場合、
for(i=0;i<=n;i++){ print 配列名[i]; }
のように、配列の要素数とカウンタを使ったダサイ記述をするハメになります。一方、foreachを使えば楽ができます。
私はこのforeachが大好きです。
foreachのおかげで、配列が好きになりました。
以下、Perl , PHP, VBA, JavaScriptで、配列の全要素を表示する例です。
Perl ※
foreach my $item (@items) { print $item; }
PHP
foreach ( $items as $item){ echo $item; }
JavaScript
for(var i in items){ alert(items[i]);}
VBA ※
For Each item In items
MsgBox item
Next
※注1 Perlの場合は、さらに短く書けます。
foreach (@items){ print $_ ;} または
for(@items){ print $_;} または
print for @items;
※注2 VBAのこのコードは、厳密にはコレクションといって、配列とは別のものです。 しかし実質的には配列のように使えます。