プログラム悪戦苦闘日記

はてなダイアリーからの移行(遺物)

VBA

Excel VBA コントロール処理を分散させる

VBA

WindowsのルールというかMS仕様では、コントロールのイベント(メッセージ)はトップウィンドウが受け取る、というのがある。たとえばワークシート上のボタンコントロールがあったとして、こいつを押したときイベントを受け取るのはボタン自身ではなくてワー…

グローバル変数てんこもり

VBA

そろそろVBAネタも飽きてきたけど、これだけは書いておきたい。グローバル変数だ。VBAにおけるグローバル変数をは、Public な変数のことだが、これだけでなかったりする。現在アクティブになっているWorkbookなりWorksheetなりCellなんかも、グローバル変数…

GUIはどーなってるの

VBA

Excel VBAの話の続きです。Excelの操作性とかそういう話ではなく、GUIプログラムはどういう構成はどうなっているか、という話です。 GUIプログラムにおいて、最初に気になる点は次の4つではないかと思っている。 コンポーネントのディスパッチャー(イベン…

Excel VBAはモジュール志向!

VBA

時間無いので要点だけ。 VBAはモジュール(≒ファイル)か、スコープの単位になる 一言で言うと、『ポインタのないC言語』 VBAで言うところの「オブジェクト」とは、『メソッド付き構造体』(いちようカプセル化はあるが…) クラスモジュールは、オブジェク…

Excel VBA 事始め

VBA

他言語で開発経験を積んでいると、Excel VBAが非常にとっつきにくい。実はExcel VBAを『開発言語』と捉えると、とても奇特な環境でなのである。というのは、Excel ワークブックというのは、 開発用のエディタ内蔵 デバッグ環境 配布用実行ファイル の3つを…

Excel VBA オブジェクト階層図のウソ

VBA

今までなんとかVBAを使った開発を逃げてきたのだが、今回ばかりはどうしてもExcel VBAでの開発になってしまった。Excel VBAを触ったことがないわけではないのだが、まともにやるのは今回が初。そこで文法とかAPIとかオブジェクトとか適当に勉強していたのだ…

Excel VBAからパスワードつきAccessにADOで接続する

VBA

con As ADODB.Connection Set con = New ADODB.Connection With con .Provider = "Microsoft.Jet.OLEDB.4.0" .Properties("Data Source").Value = ThisWorkbook.Path & "\db1.mdb" .Properties("Jet OLEDB:Database Password").Value = "xxx" .Open End With…