ねこでん

猫目堂電脳倶楽部インターネット出張所
 ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
 メインメニュー
 ブログカレンダー
2012年 2月
« 1月    
 1234
567891011
12131415161718
19202122232425
26272829  
 ランダムギャラリー
2005年に登録したCG 105
 ブックマーク
 最新ニュース
 今後の予定 (piCal)
 掲示板 最近の投稿
スレッド 返信 最終投稿
ゲームかパチスロか?! 0 2012-1-20 18:59 muc00
マイクロソフトよ何処へ行く? 0 2012-1-14 2:10 muc00
あけまして 1 2012-1-5 20:56 tatto
 最新のブログ記事

2012年1月5日(木曜日)

VBAで配列

Filed under: - tatto @ 21時27分31秒

 しばらくVBAから離れてたので、色々忘れていて困り果てたため自分メモを残す。
 Excel VBAでの覚え書き。Excel2003だけど2010でもOK。

(1)配列をDimでなくConst(定数)として扱う。

 Const ArrMybook() AS String = Array("我が輩は錨である”,"老人と滝”,"2010円宇宙の旅”,"嚔")

 という風に扱いたいが、配列はConstとして使えない。あくまでDimるしかない。

 仕方がないので一個一個入れていく。

 Dim ArrMybook(4)
ArrMybook(1) = “我が輩は錨である”
ArrMybook(2) = “老人と滝”
ArrMybook(3) = “2010円宇宙の旅”
ArrMybook(4) = “嚔”

 めんどくさそうに見えるけど、Excel VBA使う場合はExcelの方で、定数化したかった文字列をセルに並べて

= ” ArrMybook(” & ROW()-3 & “) = “"” & A1 & “"”

 という感じで代入部分を一気に作ってコピーしてしまう。
 
 
(2)多次元配列の最大要素数を調べる。
 

UBound(ArrMybook)

 これを多次元配列でやりたい。書架を表すArrMyBookShelf()配列の最大要素数を知りたい!
 ArrMyBookShelf(X, Y, Z)のYの最大値を知りたいんだ!
 

UBound(ArrMyBookShelf,2)

 ということでZが知りたい場合は
 

UBound(ArrMyBookShelf,3)

 
 
(3)Functionの戻り値が動的配列だった場合に配列の要素数を調べたい。でも配列に何も入ってない可能性もあるし入ってる可能性もある。
 うわめんどくさい。しかもワタシ的にはよくあるパターン。
 何も入ってなかったら0でそれ以外は最大要素数が欲しいなー。
 そのまま何も考えずUBoundするとエラーが出る可能性もあるし出ない可能性もある。
 なにやら面倒くさいが、何もない=エラーの場合は0になればいいんだ。だったらOn Error Resume Nextしてエラーの場合は次の処理に飛ばす。

 On Error Resume Next ‘'’ 一時的にエラーを黙認
 MaxArr = 0 ‘'’ とりあえず0を入れておく
 MaxArr = Ubound(ArrMybook) ‘'’ MaxArr取得。取得できない場合は上の “0″ が生きてる。
 On Error GoTo 0 ‘'’ エラー復帰。これ以降は各エラー処理を個別記載。

 他にも色々あるけど、とりあえずこれぐらい。


2012年1月1日(日曜日)

あけましておめでとうございます

Filed under: - tatto @ 23時33分25秒

 去年はいいこともいっぱいあったけど、それ以上に震災だのなんだのとハードに悪いことも多々あって、なかなか参った年でした。
 今年は平穏無事に、いいことがいっぱいあったね。で終われる年になればいいなあと思います。
 まずは本人の努力だな!