ユーザーフォーム
Excel VBAでフォームを作る際に、項目が多くてウインドウの高さに収まりきらないことがある。 そこで今回はスクロールによってフォーム全体をウインドウに収めるアイデアを紹介する。言葉では何がやりたいのか伝わりにくいと思うのでまずは動作イメージから…
今回は連続して値を投げ込み、その最大値・最小値を求めるクラスを紹介する。 かなりシンプルなのでわざわざ記録しておくこともないかなと迷ったけど、クラス初心者向けにはちょうど良いサンプルになりそうなのでとりあえず。 クラスモジュールのコード クラ…
今回紹介するのは、複数アイテムの選択でよく見かけるDual Listbox UI。 一応説明しておくと、左のリストからアイテムを選択し、右へ移動させ、最終的に右にあるものが選択したアイテムとして扱われるユーザーインターフェースだ。構造はそれほど難しくない…
今回作成するのはボタンを動的に切り替えられるメニューである。これだけでは意味が分からないと思うので動作サンプルを紹介する。 通常は1つのボタンに1つの処理なので、5つボタンがあれば5つしか処理は書けないが、このメニューは▲と▼で動的にボタンを切り…
今回はVBAでユーザーフォームに配置したボタンの反応が遅い理由とその対策について紹介する。 検証のため、以下のようなカウンターフォームを作った。 作成方法 フォームに配置した各オブジェクトは以下のように名前を変更した。 コードは以下のとおり。 Pri…
前回、テキストボックスの最適なフォントサイズについて書いた。 thom.hateblo.jpそこでテキストボックスのHeightプロパティを21に設定したが、今回はその根拠と複数行書ける場合の最適なHeight値の求め方を紹介する。 Meiryo UI 12ポイントのときのテキスト…
VBAでユーザーフォームをデザインする際、フォントサイズに気を配っているだろうか。まず、ふつうにテキストボックスを配置するとこのような外観になる。 フォントはMS UI Gothicの9ポイント。これ、ブログの画像だと読みにくくないけれど、実際にフォームを…
普段からこのブログを読んでくれてる方は、今回のタイトルを見て「ついにthomもVBAのやり過ぎで頭がおかしくなってしまったか」と思われた方もいるかもしれない。可愛くだなんて。30超えたオッサンが何言うとんねん。 さてさて、今回作ったのはこれ。でん! …
VBAでユーザーフォームはふつう、単一のオブジェクトとして扱う。たとえば以下のようなフォームを作ったとしよう。 オブジェクト名は「frm成績」としたので、このフォームを表示させるコードはこうだ。 Sub hoge() frm成績.Show End Sub この時フォームは、…
今回作成したのは、以下のようなツール。 ※GIFアニメなので読み込み終わって動き出すまで時間かかるかもしれません。 サンプルコードが表示され、その通りに入力していくだけのシンプルなものであるが、次に入力すべきキーとそれを押す指の名前が赤く表示さ…
こちらの記事を読んだところ、同じようなChangeイベントプロシージャがコントロールの数だけできてしまうことにお悩みの様子。 kantoku.hatenablog.com面白そうなので色々調べながらやってみた。参考にしたページはこちら 3.4.3 共通イベント処理クラス - EX…
今回の記事は、Excelの表から各列の最大文字数を求め、その文字数に基づいて適切なサイズのテキストボックスを新規フォームに配置するというものである。記事タイトルからすると既存フォームに対して実行するように思われたかもしれない。 なかなかキャッチ…
VBA関連のブログ記事を書いていて困るのが、フォーム関連である。 普通の標準モジュールなら、コピーして実行してもらうだけであるが、フォームを使うコードを紹介する際などは、フォームデザインとコントロール名や配置を書かなくてはならない。たとえば、…
次のフォームをご覧いただきたい。 普段からキーボードで入力されている方はご存じだと思うが、ひとつの項目を入力し終わったとき、Tabキーを押すと次のテキストボックスにカーソルが移動する。 実はテキストボックスのTabIndexプロパティには数値が入ってお…
コンボボックスといえば、私がこの世で最も嫌いなユーザーインターフェースの一つである。皆さんも一度くらいこういう使われ方をしているコンボボックスを見たことがあるだろう。 例えば紙のアンケート用紙10,000枚を手渡されて、このインターフェースで都道…
今回はボタンを押すとフォームのテキストボックスをクリアするマクロを作成していたのだが、どうもテキストがクリアされるまでが遅く、ハマってしまった。前にも似たような内容でハマったことがあるので、いいかげん忘れないようにここに記しておく。 事象の…
自分が作ったマクロを他人に使ってもらう場合、「何ができるか」という機能だけでなく、「どのように出来るか」という操作性や、「どう感じるか」という審美性も大事である。素人の手作り感たっぷりのマクロを、本格的なシステムのように感じさせるのはやは…
手作業をマクロ化することで、何時間もの作業を数秒~数分で終わらせることができる。 この大きな時間削減に比べれば、マクロの実行速度が速いか遅いかなどというのは、些細なことのように思える。しかし、関西人というのはせっかちな生き物で、画面が固まっ…
treeviewの使い方に関しては、以下のページが詳しいのでそちらを参照されたし。Office TANAKA - Excel VBA Tips[TreeViewコントロールの使い方]さて、このTreeViewであるが、困ったことにフォームのエクスポートをすると壊れてしまい、張り直しが必要である…