MacPorts 導入

MacPorts を導入した。

こちらのサイトを参考にさせていただきました。
http://veadardiary.blog29.fc2.com/blog-entry-1151.html

尚、導入環境は Mac OSX Leopard 10.5.7 です。

Xcodeの導入

MacPorts で導入するソフトをビルドする為に
Xcode が入っていることが必要なので Xcode を導入する。

XcodeMac のインストールディスクから導入するか、
Apple Developer Connection から導入する*1

MacPorts の導入

本家サイトからdmgファイルをダウンロードする。

The MacPorts Project
http://www.macports.org/


dmgファイルをマウントし、パッケージをインストールする。

環境変数の設定

MacPorts で導入されたソフトは /opt/local 以下にインストールされるので
.bashrc なり .zshrc に環境変数を設定(追加)する。

export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/man:$MANPATH

すぐに適用したい場合は source コマンドを使う

$ source .bashrc
最新のMacPortsに変更する
$ sudo port -d selfupdate
$ sudo port -d sync

*1:メンバー登録が必要

gnuwin32 を導入する


vimgrep を便利に使用したいと言うことで導入することにした。

gnuwin32 とは


gnu utilities を windows で使える様にしたもの。
こちらのサイトから入手可能。


導入手順

以下は version 0.6.21 を導入時の手順

download.bat を編集する


最寄りの SourceForge サーバを指定する。


55行目(赤字が変更箇所)

if .%GNUWIN32_MIRROR%==. set GNUWIN32_MIRROR="jaist keihanna"

wget.ini を編集する(プロキシ使用時のみ)


プロキシを越える必要がある場合は、以下の箇所を変更すること


75行目(コメントを削除*1

http_proxy = http://account:password@proxy domain:port/


79行目(コメントを削除)

use_proxy = on

download.bat を実行する


コマンドプロンプトを開いて、GetGnuWin32 フォルダまで移動。
dir コマンドで download.bat があることを確認し、以下のコマンドを実行。

> download


アーカイブファイルのダウンロードが始まるので暫く待ちます。

インストール


ダウンロードが全て正常に完了したら、インストールを行う。
プロンプトで以下を実行

> install


インストール完了後、「gnuwin32」というフォルダが出来るので適当な場所にコピーして
環境変数 PATH に「(コピー先ディレクトリ)\gnuwin32\bin」を設定すること。

*1:文字「#」を削除

文字列を含むかどうかの判定

InStr を使う

result = InStr([ start, ] string1, string2 [, compare ])

引数

引数 目的
start (省略可)検索開始位置。compare を指定した場合は省略不可。
string1 検索対象文字列
string2 検索条件文字列
compare (省略可)検索条件

引数 compare に入る値

定数名 default 動作
vbUserCompareOption -1 * OptionCompareステートメントの設定を使用して比較
vbBinaryCompare 0 バイナリモードで比較*1
vbTextCompare 1 テキストモードで比較*2
vbDatabaseCompare 2 Access DBの設定を使用して比較

戻り値

条件 結果
string1 中に string2 を見つけたとき string1 中の string2 の開始位置
string1 中に string2 が見つけられなかったとき 0
string1 = "" 0
string1 is Nothing Or string2 is Nothing NULL値
string2 = "" start (startを指定して無い場合は1)
start > Len(string1) 0
参照
http://www.geocities.jp/cbc_vbnet/function/mojireyu_function.html#instr

*1:大文字/小文字 半角/全角 ひらがな/カタカナをそれぞれ区別して比較

*2:大文字/小文字 半角/全角 ひらがな/カタカナをそれぞれ区別せずに比較

例外処理

VBA での例外処理は以下の様に行う。

On Error Goto ラベル
通常処理

....

ラベル:
例外時の処理

上記の通常処理の終端では通常はExit処理かGotoによるジャンプを行う。

Exit {Sub|Function|For|Do|etc...}

Goto ラベル

参照
http://www.taquino.net/cooltaq/vba/error.html

SpecialCellsで該当要素が無い場合の動作

SpecialCellsでは該当要素が無い場合にメソッドやプロパティを使用すると例外エラーとなる。

しかし、Count=0も処理できないのはどうかと・・・。
まぁ、SpecialCells -> Range なのでしょうがないといえばしょうがないのかも知れないが。