フレームワークを作るには、その言語にはメタプログラミングの機能が必要とされる。メタプログラミングには:evalselflambdaといった機能を言語レベルでサポートしていることが望ましい。これらのどれもサポートしてないんだな。やってくれという話なんだろう......。サポートしている必要がある。クラスやインタフェースの定義、インスタンス変数、プロパティ、オブジェクトの生成をBasicのみでできることは、確認できたのだけどね......。2008.)で、COUNTIF関数によるORで結合された複数条件を扱う方法を紹介した。2007以降)を使った方法が紹介されているが、この方法では、AND条件しか、指定することができない。上述の以前のエントリは、本ブログに挙げて以来、継続的にアクセスがある。COUNTIF関数で複数条件を扱うのに困っている人は、多そうだ。この問題は、根本的には、COUNTIF関数の第2の引数である検索条件の記述の不自由さに由来するものと、考える。することが出来ないからだ。条件項目は、いくつでも可能VBAマクロは使用せず、既存の関数のみの単純な方法であるような、一般化したCOUNTIF関数で複数条件を扱う方法を、紹介する。)は、パッケージ構成についてみた。本エントリでは、クラス構成についてみてみる。以下、rharwood氏によるプロジェクトのパッケージをnet版、ikagawa氏によるプロジェクトのパッケージを、jp版と呼ぶ。Access)からなる。■ファイル名vbaunit.zip■ファイル構成ファイル名種類パッケージvbaunit/readme.htmlmodules/Assert.clsAutoGen.clsIAssert.clsIResultUser.clsIRunManager.clsITest.clsITestCase.clsITestManager.clsRectangleTesterDisabled.clsRunManager.clsSimpleTester.clsTestCaseManager.clsTestClassLister.clsTesterTemplate.clsTestFailure.clsTestResult.clsTestRunner.clsTestSuite.clsTestSuiteManager.clsVbaUnitMain.bassamples/VBAUnit.xlsVBAUnit.mdb●jp版jp版は、アドイン形式(.xla)のファイルで構成される。2011追記:久々に見なおしてみたら、千、百、十などの小さなくらいの処理にバグを見つけた。下記のコードも更新した。この修正に伴い、新たに、壱萬などの漢字表記による漢数字もサポートする仕様追加を行った。官公庁の発表している文書を読んでいるときに、グラフにしてみたいデータが有った。そのデータ部分をコピペで、Excelに張り付けていた。ところが、そのデータは漢数字で表記されていたのだ。このデータは、セル上で文字列(String)として認識される。グラフを作成するのためには、数値データが必要だ──漢数字を、いちいち手打ちで数値に修正するのはバカバカしい...下向いちゃうし。このような思いから、Excelで、漢数字を数値に変換する方法についてぐぐってみたところ、似たようなニーズがあったようで、いくつか参考となるVBAマクロを見つけることができた。固定データの指定方法がセルのみなどの点で、一般性にかけるように思われた。漢数字を数値に変換する。漢数字は、京の単位まで指定できる。漢数字の指定方法は、セルまたは文字列で指定できる。Q.“Excelで漢数字を数値に変換する方法を教えてください。Function各構成単位ごとに、丸括弧でくくることが、みそだ。最終的に、漢数字部分は数字に置き換えられ、数式の形になる。それがApplication.Evaluate()により、数値に変換される。文字列2010年8月13日金曜日VBAのドキュメントの目次一覧Microsoftのヘルプ機能は、OSのそれにしろOfficeアプリケーションのそれにしろ、まったくひどいしろものだ。知りたい機能で検索しても当該ページがでてこない。このヘルプ・ドキュメントそのものについても、同じ類のことがいえる:一覧性が非常にひくいのだ──5万数万もの高い金を取りながら、電子マニュアルしか存在しないためだ。Editorのヘルプの目次をテキスト形式で一覧にし、示すこととする。これにより、マニュアル全体を俯瞰することができ、Googleによってインデックス化されれば、検索性も増すであろう。Editorのヘルプメニューを開いたときに出て来るドキュメントだ。これらは開いたときの順番の通りに、項目を挙げている。本来的には、順番で読むのに適さないが、資料としてこのままとする。凡例このテキストでは、■-□-◆の順に、ドキュメントの階層を表す。◆A-Zは、必ずしも、AからZまでの項目があるわけではない;実際には歯抜けとなる項目が存在する。��?)は、?アイコンを示す。項目右端の★は、読むべき注目を表す。基礎的な概念について述べている項目に付した。いうのも、資料は必ずしも理解に適した順番で配列されているわけではないのだ。階層構造についても、同じことが言える。『プログラミング言語C』を書いてみたい。COUNTIF関数は、次のような形式で範囲で指定されたセルの中から、条件を満たすセルの個数をカウントするものである:=COUNTIF(範囲,検索条件)ここで、「検索条件」とは計算の対象となるセルを定義する条件を数値、式、セル参照、または文字列で指定します。囲む必要があります)。シート名から目次を自動生成するExcelで仕様書・設計書を書いているエンジニアは、相当数にのぼると考えられます。勝手に作ってほしいですよね。WORDなら、できるんだし。各シートにページ・タイトルを設定する今回は、以下のような仕様でいこうと思います:ページ・タイトルは、シート名と同一とする各シートのA1セルに、ページ・タイトルを表示する当然、シート名を変えたときは自動的に追随するものとします。Subシートごとに、A1セルの値を設定しているだけです。シート名は、Excelの関数cell()から得ています。cell関数を使用しているため、シート名を変更したときは、自動的にタイトルも変わります。わかりにくい点として、ダブル・クォート(”)が4つ、連続して書かれている箇所があります。これは、文字列としてのダブル・クォートです。目次を自動生成するここでは、以下のような仕様で行こうと思います。用意し、このセルから下に向かってページ・タイトルを羅列していく羅列されたページ・タイトルをクリックすると、そのシートにとぶこれらは、以下のようなコードで実現されます。Sub注意としては、セルの名前:TITLE_LISTINGは自分で定義すること。このマクロを実行すると、目次シートのTITLE_LISTINGセルから下に向かって、ページ・タイトルがずらっと表示されると思います。各ページ・タイトルは、HYPERLINK関数を利用して表示されているので、クリックすると、実際のページに飛びます。わかりにくい点として、ダブル・クォートでかこまれたシングルクォートがあると思います。これはなぜ必要か?シート名によっては、参照がうまくできなくなる場合があるからです。(ハイフンを含んだシート名=ページ・タイトルで試してみて。)HYPERLINK関数の仕様です。お好みで、この目次ページに「更新」ボタンなどを定義し、押下したらmake_contents()が実行されるようにしたらよいでしょう。2010]追記:2種類のパッケージを混同していたので、記述を修正。設定は、いらないのだね。後者なら、ReadMeとサンプルもついているよ。)sourceforge.jp版の場合、ダウンロードしたら解凍して、アドインを組み込めば使えるみたいよ。ツール>アドイン...>参照...から、組み込めるよ。.basをインポートする。Editorでファイル>インポート...から、インポートできる。それから、イミディエイト・ウィンドウでpreprunと、タイプしてみて。Editorのメニューの表示>イミディエイト・ウィンドウで表示できるよ。マクロのソース・コード記述って、テキスト・ファイルに落とせるんだね。いつも、コピペで対応していたよ。ブラウザ内で、各モジュール配下のオブジェクトを選択>右クリック>ファイルにエクスポート...で、出力される。フォームの場合は、ソース・コードそのものとバイナリ・ファイルのペアが出力されるね。バイナリ・ファイルのほうは、ジオメトリックな情報なんだろうね。テキストで入力された日付を、日付値に変換する方法。