VBA

正規表現を利用する手段いろいろ

VBA

例題として以下の置換処理を考える。 "foo(10,1)+foo(20,2)" → "bar(1,10)+bar(2,20)"・関数名をfooからbarに変更。 ・第1引数と第2引数を交換。 ・置換箇所は2カ所以上。 正規表現を使わない場合 比較対象として正規表現を使わない例もあげておく fooをbar…

dllを呼び出す

VBA

今作ったfoo.dllをExcelから呼び出してみる Declare Function foo Lib "D:\dll\foo.dll" (ByVal x As Integer) As Integer Declare Sub bar Lib "D:\dll\foo.dll" (ByVal s As String)イミディエイトウインドウでテスト ? foo(1) 2 s="Fizz" bar(s) ? s Fizz…

Excel版チューリングマシン

VBA

Excel上で動かすチューリングマシンシミュレータを作ってみた。 使い方 B列に縦に65536マスのテープがあると想像する。 (横ではなくて縦にしたのは、横だと256マスしかないから) その隣のA列をヘッドが現在の状態を表示しながら移動する。 チューリングマシ…

角カッコを活用する

VBA

以下のような処理は、角カッコ(Evaluateメソッド)を使って1度に済ませられる。 Range("A1:C1") = Array(1,2,3) Range("A2:C2") = Array(4,5,6) Range("A3:C3") = Array(7,8,9)↓ [A1:C3] = [{1,2,3;4,5,6;7,8,9}]ただし変数の参照等は出来ないので注意 Evalua…

リアルタイムキースキャン

VBA

以下の宣言を書くとVBA中でGetAsyncKeyState(キーコード)という関数が使えるようになる。 Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long 残念ながらエクセルとエクセルマクロ(VBA)の基本機能だけでは、どのボタンが押さ…