t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

Webで動くVBAチュートリアルを作りたい

Webで動くVBAチュートリアルを作りたい その13

インタープリターの作成の元になる、四則計算電卓を作った。 C++のソースを見ながらVBAのコードを書いたので、C++初心者にはそれだけで一苦労だった。 再帰的下向き構文解析というアルゴリズムらしい。 Stackは以前に公開したものを流用している。 Dim Progr…

Webで動くVBAチュートリアルを作りたい その11

やさしいインタープリタの作り方入門だけでは限界を感じてきたので、新しい書籍「明快入門 インタプリタ開発」を買ってきた。この本は、ある計算式をプログラムにどう解釈させるかという問題について、明瞭に答えが示されている。ひとつは、逆ポーランド記法…

Webで動くVBAチュートリアルを作りたい その10

全然コードが書けていないが、モチベーション維持のために完成イメージだけ作ってみた。 ミニシートはちょっと欲張りすぎたか。。わざわざ入門教材をダウンロードしてExcelを起動してというのも面倒くさいという人でも、サイト上でちょこっと試せるならやっ…

Webで動くVBAチュートリアルを作りたい その9

その6で作ったEvalVariableプロシージャのうち、変数かどうかを判別する部分をつかいまわしたかったので、そこだけ関数にした。 '変数を評価するプロシージャ Sub EvalVariable(ByRef Memory() As String) If UBound(Memory) < 1 Then Exit Sub For i = 1 To…

Webで動くVBAチュートリアルを作りたい その8

さて、いよいよ命令を解釈して実行してみる。まずは、VBAの命令を文字列として呼び出すために、Wrapperを作る。 Sub VBA_MsgBox(x) MsgBox (x) End Sub 次に、その6で作ったGlobalDefinitionの最後の行にVBAFunctionの中身を変更するコードを記述。 VBAFunct…

Webで動くVBAチュートリアルを作りたい その7

そろそろ評価した値をくっつけたいが、書籍によると、スタックが必要らしい。 VBAにそんなものは無いので、Stackクラスを実装することにした。 自己流ではあるが、とりあえず、PushとPop、CountとTopは出来る。 以下、クラスモジュール[Stack]に記載するコー…

Webで動くVBAチュートリアルを作りたい その6

その5の続き。 変数を評価できるようにしたいので、メモリの内容を変数で置き換えるプロシージャを作成。これは、その5で作成したM2_Subモジュールに作成。 まずは予約語の評価を回避するために、General領域にDictionary型の変数を準備。 ※これは参照設定で…

Webで動くVBAチュートリアルを作りたい その5

その4で、要素ごとに配列に格納するところまでできたので、これをTextToElemArray関数としてまとめた。 テキストを与えると、要素に分かれた配列を返してくれる関数だ。 ついでにVBAのモジュールをM1_Main、M2_Sub、M3_Baseの3つに分けて、この関数はM3_Base…

Webで動くVBAチュートリアルを作りたい その4

その2で公開したFindString関数の以下の部分は、もっとスマートに書けるということに気づいた。 Else 'ひと文字目が「"」以外の場合は、 '次の「"」の手前までの文字を返して終了 For i = 2 To Len(st) If Mid(st, i, 1) = """" Then FindString = Left(st, …

Webで動くVBAチュートリアルを作りたい その3

とりあえず昨日は文字列とそれ以外を切り分けたが、今日はそのつづき。文字列以外の要素はさらにスペースで分割して配列に入れてみる。 【Debug.Printの結果】 MsgBox "こんにちは""" & Name & """さん。" & vbNewLine & "お元気ですか?" ↓memory(0)←[MsgBo…

Webで動くVBAチュートリアルを作りたい その2

JavaScriptでVBAもどきを作ろうという話のつづき。 とりあえず、簡単なところでMsgBox命令から実装しようと思ったが、これが実は結構むずかしかった。 「MsgBox "こんにちは"」を「window.alert("こんにちは")」に変換させるだけなら楽勝だが、実際のメッセ…

Webで動くVBAチュートリアルを作りたい

私のサイトでVBAの入門教材を配布しているが、家にExcelを持ってない人も使えるように、VBSを使った学習の進め方もWebに掲載した。 でも人間やっぱり面倒くさいことはやりたがらないもので、Webに来てもらってそのままWebで実行できたらスマートかなと思う。…

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。