t-hom’s diary

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

2017-01-01から1ヶ月間の記事一覧

VBAから手軽にDOSコマンドやPowerShellを実行して結果を取得するモジュールを作成

VBA

システムの運用をやっていると、VBAからDOSコマンドとかPowerShellを実行したくなるケースがある。 WScript.ShellのExecメソッドなら標準出力が取得できるのだが、一瞬DOS窓が開いてしまうのがちょっと格好悪い。非表示でやりたいと思ったら、Runコマンドで…

科学のモデルとはフィクションにおける「設定」のようなもの

今回はこちらの記事を受けて、私が学生の頃、先生にどう説明してほしかったのかという話を。 chemiphys.hateblo.jpこういうのって個人差が大きいので、クラス全員がまんべんなく理解できるような解は無いんだろうけど。実は私、ここ半年くらいの間に原子構造…

VBA マクロ、プロシージャ、メソッドなどの用語について正確に理解する

初心者向けの解説によくマクロとVBAの違いが取り上げられる。 一応違いについて説明した後、同じようなものなのであまり気にしなくて良いと締めくくるケースも多いけど、私はやはり違いを意識したほうが良いと考える。初心者は同じようなものと言ってくれた…

九九、FizzBuzz、じゃんけんの3つをプログラミングの「永字八法」に認定する

漢字の「永」の字には、書に必要な以下の技法8種が全て含まれている。 点 横画 縦画 はね 右上がりの横画 左はらい 短い左はらい 右はらい このことを永字八法(えいじはっぽう)というらしい。カッコイイ!つまり書の練習に「永」という漢字をチョイスすれ…

VBAのコーディングガイドラインを作ってみた

VBAのコーディングガイドラインを作ってみた。掲載先は私のメインサイト。VBA コーディングガイドライン - You.Activateガイドライン作成にあたり参考にしたのはこちらの4冊VB.NETルールブック ?読みやすく効率的なコードの原則作者: 向山隆行,片山優司,阿部…

VBA 「これはマクロ化しない」という決断も必要

VBAを覚えてマクロを作れるようになると、業務を手当たり次第自動化したくなるものだ。しかし安易な自動化は慎むべきかもしれない。このように考えるようになったのは、以下の記事がきっかけだった。 自動化をどこまで進めるか|会社で役立つリスクマネジメ…

VBA SmartArtを使ってシートごとに作業ステップを表示するバーを作成するマクロ

VBA

今回はVBAでSmartArtを使ってシートごとに作業ステップを表示するバーを作成してみようと思う。作成物のイメージはこのようなもの。 今回マクロで作成するのは上部のStepを表示するバーの部分だけ。シート2ならStep2がハイライトされる。 ひとつの業務に使用…

VBA デザインしたユーザーフォームを元にNewで複数のフォームインスタンスを作る。

VBAでユーザーフォームはふつう、単一のオブジェクトとして扱う。たとえば以下のようなフォームを作ったとしよう。 オブジェクト名は「frm成績」としたので、このフォームを表示させるコードはこうだ。 Sub hoge() frm成績.Show End Sub この時フォームは、…

VBA 参照設定とCreateObjectを定数1つで切り替えるテクニック

VBA

VBAで外部のオブジェクトを扱うには、事前バインド方式と遅延バインド方式の2種類がある。事前バインドとはいわゆる参照設定のことで、遅延バインドとはCreateObject関数によるオブジェクト生成を指す。さて、どちらが良いかと言われると一長一短なので困る…

VBA ウォッチウインドウとステップ実行でオブジェクト変数の仕組みを学ぶ

以前クラスモジュールの入門記事でオブジェクト変数はタグのようなものだと書いた。 https://thom.hateblo.jp/entry/2016/12/31/013555#オブジェクト変数は箱じゃなくてネームタグでイメージしよう具体的な仕組みは以下の記事で書いた。 thom.hateblo.jpとは…

ExcelVBAの開発用アドインをGithubで公開してみた

VBA

ExcelVBA開発用のアドインをGithubで公開してみたのでご自由にお使いください。 ただしトラブル発生時は自己責任でお願いします。URLはこちらです。 https://github.com/thom-jp/thoms_ExcelAddIn_for_VBADeveloperファイルの直接ダウンロードはこちらです。…

VBAを写経しながらタイピング練習するツールを作成

今回作成したのは、以下のようなツール。 ※GIFアニメなので読み込み終わって動き出すまで時間かかるかもしれません。 サンプルコードが表示され、その通りに入力していくだけのシンプルなものであるが、次に入力すべきキーとそれを押す指の名前が赤く表示さ…

VBA If文の多重ネストを回避するチュートリアル

VBA

Chemiphysさんのブログで If文のお化けフィールド数が多いデータに取り組む④ - chemiphys’s blogという名言を発見。どうやら条件が増えすぎてIf文が多重ネストになってしまうということらしい。 ちょっと修正してみたので記事にして良いですかと確認を取った…

VBA MsgBoxのオプションはなぜ足し算できるのか

VBAのメッセージボックスでは、以下のように適用したいスタイルを足し算できる。 Sub hoge() MsgBox "処理を続行しますか。", vbYesNo + vbQuestion + vbDefaultButton2, "確認" End Sub 上記のマクロを実行すると、このように表示される。 変な文法だと思わ…

VBA VBエディタ上から実行できるRGB関数入力用のカラーパレットフォームを作成

VBA

ちょっと長めのタイトルになってしまったが、要はこんなの↓を作った。 VBEのメニューからパレットを起動し、目当ての色のラベルをクリックするだけでカーソル位置にRGB関数が挿入される。きっかけはこちらの記事。(感謝) chemiphys.hateblo.jp 作りかた こ…

VBA 複数の引数をとるPropertyプロシージャ

これまでProperty Getは複数の引数を受け取ることができないと思っていたが、昨日Twitterで以下のご指摘をいただいた。@thom__jp https://t.co/pgPwIa8S2pの記事で少し気になったのですが、PropertyLetは複数の引数をとれる(最後の一つが右辺、残りは左辺の…

赤字・太字・下線は文章を読みやすくしない

文字飾りが派手になっていくメカニズム 私は普段仕事でシステムの運用手順書などを作成する機会が多い。手順書は複数人がメンテナンスするので皆さんそれぞれ重要だと思ったところを赤字にしてみたり、太字にしてみたり、下線を引いてみたり、はたまた吹き出…

VBA クラスモジュールでフィールド数の多いデータを扱う

最近読者になったブログにこんなお悩みが。 80以上の要素を持つ400~500件のデータをどう扱おうか悩み中。Powerpoint VBAに触れてみて - chemiphys’s blog自分ならどうするってのを考えてみたので公開。 やはり人のブログを読むと刺激されて執筆が捗る…

VBA 変数宣言で途中改行する

VBAでは、半角スペースに続けてアンダーバーを書くことでステートメントの途中で改行することができる。実は昔、この途中改行が嫌いだった。理由は単に自分が途中改行されたコードに慣れてなかっただけで、慣れてからガンガン使うようになっている。たとえば…

CallByNameを使ったコレクションの非再帰クイック&挿入ハイブリッドソート

VBA

前回はCallByNameを使ってCollectionのバブルソートを作成した。 thom.hateblo.jpそのあとコメントでやりとりがあり、非再帰のクイック&挿入ハイブリッドソートでお悩みの様子。 kantoku.hatenablog.com幸いにもベースになるコードは以下にあるとのことで、…

VBA PowerPointでShapeを一気に削除するマクロ

こちらのブログで、PowerPoint VBAでFor Eachを使ってShapeを消すとうまくいかないという問題が紹介されていた。chemiphys.hateblo.jpやってみたところ、実際に1つ飛ばしで削除される。 実際に検証 Excelで検証してみた。 Sub Excel版ShapeAdd() Dim i As Lo…

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