タグ

VBAに関するsanthiagomanのブックマーク (40)

  • VBA開発環境をモダンにする - RubberduckとVBEThemeColorEditorの紹介 - Qiita

    VBAのIDEは古のVBE... なんだかんだでVBAを触る機会が結構あるが、IDEはVBE。 少なくともバージョン管理はほしい できる限りモダンな開発環境に近づけたい 見た目なんとかしたい ということで色々調べていたら、2つのアドイン・ツールを使うことでかなりそれっぽい感じにできることが分かった。ちなみに環境は windows10(64bit) + office2016(32bit) で確認。 紹介するアドイン・ツール RubberDuck VBEを現代のIDEっぽくしてくれるヤバいアドイン。1年前くらいに一度試してみるも、動作がかなり不安定でその時は使うのをあきらめた。 最近バージョン2.2がリリースされていたのでもう一度入れてみたところ、すんなりインストールできて動作もかなり安定している!ということで導入決定。 2018/06/10時点の安定版 VBAのエディタの色設定はデフォルトで

    VBA開発環境をモダンにする - RubberduckとVBEThemeColorEditorの紹介 - Qiita
  • Home | rubberduckvba.com

    Code Inspections Rubberduck understands Classic-VB code like no other add-in, giving it superior static code analysis capabilities that go far above and beyond what is possible with simple text-based analysis. Avoid common pitfalls (some not-so-common) with dozens (100+) of configurable inspections. Details »

  • vbacを使ってExcel VBAのソースコードを保守しやすくしよう - Qiita

    Excel Advent Calendar 2014の12/3分の記事です。 インポートとエクスポート ExcelにはVBA用のIDEが付属しています。 そこそこ良くできているとは思いますが、VBAプロジェクトの規模が大きくなってくるといろいろ大変です。特に、ソースコードのバージョン管理(変更履歴管理)をしたいと思ったときに困ります。 .xlsmファイル (.xlsxファイルのマクロが有効なやつ) 自体はzipアーカイブなのでdiffはとれませんし、zipアーカイブを展開してみても、VBAプロジェクトはバイナリとして含まれていますからやっぱりdiffはとれません。 そんなときのために、Excel VBAにはファイルのエクスポート/インポート機能があります。IDEの「ファイル」メニューを選択するか、またはプロジェクトペインのソースコードを右クリックすると、「ファイルのインポート」「ファイルの

    vbacを使ってExcel VBAのソースコードを保守しやすくしよう - Qiita
  • How to call Excel VBA functions and subs using Python win32com?

  • VBAをリボンUIに追加する(インストーラー付き) - Qiita

    Sub hello(ByVal control As IRibbonControl) MsgBox "Hello World!" End Sub 引数の ByVal control As IRibbonControl はリボン(Excel体)から呼び出す際コントローラを渡すらしいので,これを書かないとリボンから起動するときに引数エラーが表示されます.(※意外とこれ忘れがち) 2. リボンUIをXMLで定義 リボンUIをカスタマイズしたいときはxlsm内のXMLファイルで定義します. ご存じの方もいるかと思いますが,xlsmやxlsxはZIP書庫なので拡張子を変えれば解凍圧縮できます. で実際にXMLを書くときそれぞれ決まったファイル名や宣言が必要なのですが,いちいちそれを書くのも面倒なので「Custom UI Editor Tool(以下,CustomUI)」を使用しました. (DL先:

    VBAをリボンUIに追加する(インストーラー付き) - Qiita
  • VBA ローカル変数は使用する直前で宣言する - t-hom’s diary

    ネットや書籍で見かけるマクロでは、変数宣言はプロシージャの先頭にまとめられているものが多い。一般的に変数宣言はプロシージャの先頭にまとめて書くものだと紹介している記事さえある。 それはなぜかというと、みんながそうしてるからだ。 先頭にまとめるとコードが読みやすいとか、変数を一覧管理できて便利とかそういうことではない。書いてる人も、なぜ先頭にまとめるべきなのか、確たる根拠を持っていないことが多いように思われる。 じゃあなぜ先頭に書くのが一般的になったのかというと、おそらくこれは初期のC言語に由来するものだろう。初期のC言語では、変数宣言は先頭に書かないとコンパイルできなかったようだ。そのようなコードでプログラミングを学んだ人たちが、VBAに同様の習慣を持ち込み、それが標準的な作法として扱われるようになったものと思われる。 現在ではローカル変数は使用する直前で宣言するのが主流 まずこちらの記

    VBA ローカル変数は使用する直前で宣言する - t-hom’s diary
  • エクセルVBAコーディングガイドライン【随時更新】

    みなさん、こんにちは! タカハシ(@ntakahashi0505)です。 弊社でお仕事をする場合に、「こういうコーディングルールでやろうね」というのを、自分自身または一緒にお仕事をするパートナーさんにお伝えすべく、エクセルVBAのコーディングガイドラインを作ろうということになりました。 GoogleドキュメントやEvernoteで共有してもいいのですが、拙著「ExcelVBAを実務で使い倒す技術 」にもほとんど書いてある内容ですし、別に企業秘密とするほどのことでもないので、せっかくなら記事にしてしまえ! ということで、記事として書かせてもらっています。 あくまで、弊社ではこう…というものなので、いろいろとご意見、好み、その他、色々とあるかもしれませんが、一部でも皆様のご参考になれば幸いです。

    エクセルVBAコーディングガイドライン【随時更新】
  • Excel VBAコーディング ガイドライン案 - Qiita

    ここで記述する内容はあくまでガイドライン、指針の案にすぎない。この規約を守るためにコードを作るのでなく、よいコードを作るためのガイドラインにすぎない。このガイドラインがよいコードを作るのに障害になる場合は、ガイドラインを変えるか、ガイドラインを使用しない。 つまり、このガイドラインは必要に応じて、変更されることがある。 もし、ガイドラインを考える場合、VB6の規約が参考になる。 Visual Basic Coding Conventions 宣言について 変数の宣言を強制する モジュールの先頭に下記の構文を記述して型の宣言を強制すること。 この宣言は下記の手順で自動で作成することもできる。 【ツール】→【オプション】 【編集】のタブを選択 【変数の宣言を強制する】をチェックする。 理由 変数名の記述ミスがあった場合、コンパイル時にそのミスを検知できる。 暗黙の型は使用しない VBAで変数の

    Excel VBAコーディング ガイドライン案 - Qiita
  • エクセルVBAからのワークシート関数呼び出しメモ(Hishidama's Excel Memo "WorksheetFunction")

    ExcelVBAからワークシート関数呼び出し Excelの関数には、Visual Basic関数とワークシート関数の2種類があります。 ワークシート関数はワークシートのセル内に入力して使用できる関数で、 VB関数はVBA(マクロ)内で使用できる関数です。 同名の関数でも動作が全く違ったり、似ていても動作が微妙に違ったりします。 Ascはワークシート関数では全角文字列を半角に変換するが、VB関数では先頭一文字の文字コードを返す LenBはワークシート関数では半角文字を1バイト・全角文字を2バイトとしてバイト数を返すが、VB関数では半角文字も全角文字も2バイトとしてバイト数を返す。 VBA側から、ワークシート関数を呼び出すことができます。 Applicationのプロパティとして取得できるWorksheetFunctionオブジェクトが、VBAから呼び出せるワークシート関数を保持しています。

  • 昨日までJavaJavaしてた人がいきなりExcelのVBAを実装する羽目になったときのためのメモ - Qiita

    Excel は滅びぬ! Excel の力こそ日企業の夢だからだ! VBA 実装してて学んだこととかのメモ。 JavaJava してたかはあまり関係ないかも。 エディタの使い方 エディタを表示する Alt + F11 で VB エディタを表示できる。 環境設定 背景色・フォントを調整する デフォルトの白背景とか気が狂うので、暗い色にする。 「ツール」→「オプション」を選択し、「エディターの設定」タブを開く。 「コードの表示色」を選択して、「背景」の色を選択する。 ついでにフォントも見やすいやつに変更する。 これだけで開発効率が5割増しになる。 イミディエイトウィンドウ イミディエイトウィンドウを表示する いわゆるコンソールに当たるのが、イミディエイトウィンドウと呼ばれるウィンドウ。 Ctrl + G で表示される。 イミディエイトウィンドウに出力する ↓イミディエイトウィンドウに実行するプ

    昨日までJavaJavaしてた人がいきなりExcelのVBAを実装する羽目になったときのためのメモ - Qiita
  • Excelじゆうちょう 短絡評価できないAnd、Or

    やたらに多いカテゴリ はじめに [2]りっぷ2(りっぷつぅ)使い方 [12]ペイントへの道 [2]likePバージョンアップ案 [6]likeP使い方 [5]Excel2003VBA速度比較 [5]Excel2003パフォーマンスレポート [5]論理演算子でRGB値操作 [7]Excelのバグ関連 [7]ツールバーのカスタマイズ [5]INDIRECT関数の底力 [5]新旧Excel、カラーパレットの互換性 [5]ワークシート関数操作、Evaluate [4]一次元、二次元配列でのセル操作 [4]標準モジュールだけができること [4]新Excel、セルの色(書式)上限 [4]セル幅の単位、ColumnWidth [4]1ミリ秒の精度、timeBeginPeriod [3]塗りつぶし、ColorIndexとColor [3]For … Nextステートメント [3]セルの選択範囲、操作テクニ

  • OLの事務vim日記 - 藻ログ

    4月から都会でOLとして働き始めたので, OL的windowsの事務処理環境を手探りで作ってみました. OLとWindows 事務処理といえばOffice, 当然Windowsで行うことになります. 今時のOLは家ではLinuxを使っているはずなので, 自然とシェル環境で困ることになります. Windows当にわからない linuxコマンド使いたい(DOS音痴) Cygwinは嫌い MinGW+MSYS にしてみたい(けど未だによくわかってない) 事務PCなので, 大掛かりな環境は入れたくない(入れられない) WSL ? そもそも Windows7 なので(ry) などのモチベーションから 色々見ていてcmderが良さそうだなと思ったのですが cmder.net 所属機関でフィルタされて落とせなかった(つらい)ので, ConEmu + msys bash の組み合わせで端末環境を整える

  • VBA ほぼタイプセーフなコレクション - Qiita

    VBA やってますか? VBAってプログラマーに人気ないですよね、たぶん(´・ω・`) でも私のような個人で小さなお仕事をこなしていつないでいる、ワープア系プログラマにとってはマクロ作成依頼が大事な収入源だったりします。 言語の機能はとても貧弱だし、私の大好きな C# とは比べることすら失礼なほどに手の掛かる子ですけど、慣れるとかわいいものです( ´∀`) いまどき配列使ってる男の人って・・・ ダメなところは色々あるけど、やっぱり配列だけは最悪・・・ 固定配列は扱いにくいし、可変配列はもっと困ります。 基的には素直に Collection クラスを使うべきなんですけど、すでにあるマクロの保守で配列を使わざるをえないケースもあると思うので問題点を考えてみます。 可変配列は ReDim でメモリーを確保します。 要素数がいくつあるのかは UBound で配列の添え字の最大値から間接的に調べ

    VBA ほぼタイプセーフなコレクション - Qiita
  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more

  • Excel VBAで配列の長さを取得 - phithonのブログ

    VBAには配列の長さを取得するLengthといったメソッドが存在しない。 そもそも配列にメソッドが存在するのかどうかも怪しい。 配列の長さを直接求める関数も存在しないため、以下の関数を利用する。 LBound 配列の最小インデックスを取得 UBound 配列の最大インデックスを取得 Sub PrintArray() Dim spl() As String spl = Split("a,b,c", ",") ' ["a","b","c"]という配列を生成 Debug.Print UBound(spl) - LBound(spl) + 1 ' 配列の長さを取得したい場合 Dim i As Integer For i = LBound(spl) To UBound(spl) ' 配列の各要素を順に処理したい場合 Debug.Print spl(i) Next End Sub

    Excel VBAで配列の長さを取得 - phithonのブログ
  • モダンなVBAの書き方

    「糞VBAコードのメンテナンスが減りますように。なむなむ」 VBAは、非常に古い(VB6ベース)の言語なので、既存のコードは、非常に読み難い物が多いです。しかし、最近、ちょっとしたことをVBAで書いちゃうというソリューションは、案外一般的になりつつあるように思います(これ自体は悪いことではないと思う)。新しく書くVBAのコードをどう書くべきか?という自分なりの意見を纏めてみました。これは、VBAで完全なOOPをしろと言っているものではなく、単純な構造化された小さい関数を組み合わせてプログラムを書く方針(関数型言語のことではない)を勧めるものです。 変数宣言を強制する! これは、自分のため。とにかく書く。オプションで設定しておけば自動で挿入される。 変数宣言は、必要になったところで宣言する! そのコードを読む人に、いちいち、関数の先頭までスクロールさせるな。変数の有効範囲をなるべく狭くするこ

  • VBA 確率 (パソコン便利ツール集)

    吉村忠与志さんの「厳選例題 Excelで解く 問題解決のための科学計算入門」に掲載されていた事例から、一つだけ紹介します。 グラフ作成の部分は、Excelの「マクロの記録」機能を使って、VBAコードを生成しました。 ワークシートにグラフを埋め込むと、グラフが配置される場所は、表示されている画面の中央付近になります。 グラフを、セルの場所を指定して、作りたい場合は、ChartObjects コレクションオブジェクトに対してAddメソッドを使います。 詳しくは、シートの位置を指定して、複数の領域を含む、複数のグラフを表示 の項を参照下さい。 下のマクロをダウンロードできます。→MonteCarlo.xls 参考:「点の数と近似値の誤差」については、下の1.4を参照下さい。 http://www.math.sci.hiroshima-u.ac.jp/~m-mat/TEACH/keisan-1.p

  • 配列研究室 STEP 3

    5.ワークシート関数の利用 ここで述べたように、Excelのワークシート関数には、引数として配列を扱えるものが結構あります。 一見「セル範囲」を指定しているように見えても、実はその範囲の値を配列として処理しているのです。 「セル範囲」というのはVBAのデータ型で言うとRangeですが、実際にRange型の引数しか指定できないのは、RANKやOFFSET、SUMIF、COUNTIF、PHONETICなどです。 一方、SUMや、VLOOKUPの「範囲」のような引数は、Range型ではなくVariant型であり、セル範囲として与えられたとしても、最終的には配列的に処理されます。さらに、セル範囲ではなく、直接配列を指定することも可能です(こちらも参照)。 これらの「配列を扱える」ワークシート関数の多くは、VBAのコードの中で、2次元までの配列を処理するために利用することができます。 たとえば、数値

  • 『運用屋さんのためのVBA入門』 ~ 運用方法論 運用工程設計・自動化概論 〜

    #ssmjp ~腹を割って話そうスペシャル~ でのパネルディスカッション発表資料です。 http://ssmjp.connpass.com/event/8615/ ゆるりとした会場の雰囲気にあわせた資料となっております。ご理解いただければ幸いです:-) 2014-12-03: 当日発表では使わなかった「なぜ、セキュリティインシデントは発生するか」を追記したものを再アップしました。

    『運用屋さんのためのVBA入門』 ~ 運用方法論 運用工程設計・自動化概論 〜
  • エクセルVBAを学びたいので、初心者向けに良さそうなサイトをまとめた - FX初心者向けまとめ解説(株式投資もあるよ)

    文系人間なんです(プログラムとか無理) わたしはけっこうな文系人間で、特にPCとの親和性が非常に低い。 どのくらい苦手かというと、ACCESSほぼ無理(最初から組まれているデータベースを利用する程度)、EXCELはマクロまでって感じ。SEが多いと言われるはてなユーザーじゃ珍しいレベルのダメさ、だと思う。 もとからそれほどPCが大好きってタイプじゃ無かった。 けど、ここまでできないのは、あまりこの手のスキルが要求されない職場環境だったことも影響していると思う。なんというかいろいろすでに整っていて、既存ものを利用したほうが効率が良さそうな感じ。 が、一方で自分でプログラム作れるってことへの漠然としたあこがれはある。 また、さすがに社会人として経験年数も増えてきたので、もう少しPCスキルも上げておきたいところ。 おそらく自分で(簡単な)VBAくらいできれば、業務の柔軟性みたいなものが向上する気が

    エクセルVBAを学びたいので、初心者向けに良さそうなサイトをまとめた - FX初心者向けまとめ解説(株式投資もあるよ)