VBA

テーブルの列を指定して重複のないリストを作成

昨日は、テーブルのデータを列単位で格納して、配列を作成する際の 失敗談を紹介した。 infoment.hatenablog.com 実はこの事例の発展形として、個人的に作成頻度が高いのがこちら。 テーブルの列を指定して重複のないリストを作成 ということで、今日は ↑ こ…

テーブルの列を指定して配列を作成するとき、テーブルの行数によって結果が変わる話(失敗談)

例えば、こんなテーブルについてのお話。 このテーブル(行数可変)で、こんな処理を行ったとする。 Sub Test() ' 名前列の値を配列に格納。 Dim arr As Variant arr = ActiveSheet.ListObjects(1).ListColumns("名前").DataBodyRange ' 一つずつイミディエ…

Applicationのまとめ(一部)

先日から、処理速度に影響する画面更新などを一時停止する クラスモジュールを作成している。 infoment.hatenablog.com 今日は、そのまとめ。 先日来、どちらにするか悩んでいたのが、↓ の 「Call Init」の個所。 初期化と同時に、自動で初期設定している。…

幽霊シートが消えてくれない

先日から作成中のクラスモジュールに、シート削除関数を設けている。 その過程で遭遇した現象について、再現方法が分かったので紹介する。 その現象とは「Excelの強制終了」という恐ろしいもの。どこにどのような 影響があるか分からないので、正直、試すこ…

指定パターンのシート名のみ纏めて削除または残す

前回は指定文字を含むシート、または含まないシートを纏めて消してみた。 infoment.hatenablog.com 今日も、前回の続きから。 自動処理をする過程で、例えばこのように、年月を6ケタの数字で表した 名前のシートが複数登場する場合がある。 これらを「数字…

指定文字を含むシートのみ纏めて削除または残す

前回は、マクロの処理速度に影響しそうなものを纏めて止めてみた。 infoment.hatenablog.com今日も、前回の続きから。 マクロで自動処理する際、一時的な作業用シートを作成する場合がある。 そこで一時的なシートには、消去の可否を示す目印をつける場合が…

処理速度に影響しそうなものを纏めて止めてみる

昨日は、警告を出さずにシートを削除してみた。 infoment.hatenablog.com今日も、昨日の続きから。 シート削除時の警告メッセージのように、自動処理中の速度を低下させたり 中断するもの。私の認識では、それは以下の4つだと思う。 画面更新(ScreenUpdati…

シート削除時の警告を表示しない

昨日、こんなブログを書いてみた。 infoment.hatenablog.com書いてみて気が付いた。Applicationと書くのが面倒くさいのではなく、 このようにスイッチを切ったり入れたりするのが、実は面倒なんだと。 ' 警告表示を一時停止。 Application.DisplayAlerts = F…

是非はともかくとして、Application を Appと略してみた。

マクロで自動処理する際、処理の高速化などを目的として画面更新を 一時的に停止する場合がある。↓ そのための、超有名な一文がこちら。 Application.ScreenUpdating = False ところで先日、Applicationと入力中に突然、猛烈に面倒くさくなった。 「Appl」ま…

Stampのまとめ

Excelに日付印を模したオートシェイプを押印する、クラスモジュールを 作成した。そこで、現時点の最終形をこちらに載せておく。 ※不定期に更新の可能性あり。使い方は、新規に作成したクラスモジュールに、これを丸ごとコピー& ペーストしていただければO…

日付印を作成 ⑥ 画像にしてから貼り付け

先日から時代の流れ(脱ハンコ)に逆らい、Excelで日付印の描画に挑戦中だ。 前回は、マクロファイル以外にも押印できるようにしてみた。 infoment.hatenablog.com 今日も、前回の続きから。 前回作成したマクロを、職場のある方に紹介した。 すると、こんな…

日付印を作成 ⑤ マクロファイル以外にも押印

先日から時代の流れ(脱ハンコ)に逆らい、Excelで日付印の描画に挑戦中だ。 前回は、日付印の色や部署、押印者名およびフォントの設定をシート側に記し、 マクロに馴染みがない人でもカスタマイズできるようにしてみた。 infoment.hatenablog.com 今日も、…

日付印を作成 ④ 名前や色などはシートで設定する

先日から時代の流れ(脱ハンコ)に逆らって、Excelで日付印の描画に 挑戦している。前回は、日付印としての形が完成するところまで作り 込んでみた。 infoment.hatenablog.com今日も、前回の続きから。 今回作成したクラスモジュール「Stamp」。この中で特に…

日付印を作成 ③ 線を引いて名前を入れる

先日から時代の流れ(脱ハンコ)に逆らって、Excelで日付印の描画に 挑戦している。前回は円を描き、その中央に日付を入れてみた。 infoment.hatenablog.com今日も、前回の続きから。 日付印の作成は、以下の手順で行う。 必要な座標などを全て最初に計算す…

日付印を作成 ② 各座標を初期設定する

先日から時代の流れに逆らって、Excelで日付印の描画に挑戦している。 前回は、各座標を求める計算を一通り行った。これについて幾つか間違いが あったため、まず修正したものを再掲する。 日付印の作成は、以下の手順で行う。 必要な座標などを全て最初に計…

日付印を作成 ① 各座標を計算

昨今、「脱ハンコ」が叫ばれている。 そげんこつ言われとるとですけど、職場から、いっちょんハンコが 無くならんとですよ。 ということで時代に逆らって、Excelで日付印の描画に挑戦する。 今回作成するのは、こんな感じの判子だ。とりあえず、手動操作で作…

フォントサイズをコンマ台で刻む

ふと、思った。 そういえば、Excelのフォントサイズで、「10.5」ってあるな。 例えば、A1セルのフォントサイズの型を調べてみると、Doubleとある。 なので、小数点を含む設定が可能なのだろう。 1. フォントサイズ 10.4 の場合 A1セルのフォントサイズを…

オートシェイプの中心を、指定セルの中心に合わせる

昨日、テキストボックスのサイズに合わせて、テキストボックス内の 文字サイズを自動で拡大または縮小する関数を作成した。 infoment.hatenablog.comこれでようやく次に進めると思った矢先、問題が発生した。 問題点: Autosizeで最適なフォントサイズを探る…

テキストボックスのサイズに合わせて、中の文字サイズを変更する

昨日、テキストボックスのサイズに合わせて、既存機能で中の文字サイズを変更しようとしたが出来なかった。 infoment.hatenablog.com無いものは仕方ない、作るとしよう。 作戦としては、こんな感じだ。 テキストボックスの大きさを一旦、文字の大きさピッタ…

テキストボックスに合わせてフォントサイズを変えたい(未解決)

テキストボックス内の文字サイズを、テキストボックスの幅に 合わせて変更したくなった。 ↓ こんなイメージ。 色々と調べるうちに、ここに辿り着いた。 docs.microsoft.comこれは便利!ということで、早速実行してみる。 Sub Macro1() Selection.ShapeRange.…

連想配列のキーの型に関する失敗談

今回は、連想配列のキーに関する失敗談。 以前、こんな処理を行ったことがある。 業務システムからExcelファイル①を出力。 ①のコード列をキーに、品名をアイテムとして連想配列を作成。 別のExcelファイル②のコードを取得し、連想配列に存在する場合は②の品…

テーブルから別テーブルへの転記 ③ 配列と連想配列の組合せ ~その10.使用例:其の二~

先日、テーブル間データ転記のためにまとめたクラスモジュールについて、 その使用例を一つご紹介した。 infoment.hatenablog.com今回も、別の使用例を一つ。 今日は、三つのテーブルを使ってみよう。 テーブルD:転記元 テーブルA:転記先 テーブルB:退…

テーブルから別テーブルへの転記 ③ 配列と連想配列の組合せ ~その9.使用例:其の一~

前々回に、テーブル間のデータ転記をまとめたクラスモジュールを作成した。 (正確には、数学の「集合」を扱うクラスに押し込んだ)。 infoment.hatenablog.com 今回は使用例を一つ、ご紹介。 例えば、1年1組と1年2組で国語と数学のテストがあって、その…

テーブルから別テーブルへの転記 ③ 配列と連想配列の組合せ ~その8.使い処~

前回は、テーブル間の転記に関するまとめを自作の「集合クラス」に統合 してみた。 infoment.hatenablog.com 今日は、このクラスモジュールの使い処について考えてみる。 1.VLOOKUP関数で充分では? ユニークな情報をキーに、テーブルから別のテーブルの情…

テーブルから別テーブルへの転記 ③ 配列と連想配列の組合せ ~その7.亜神誕生~

前回までテーブル間の転記について、色々とあれこれと、作っては直しを 繰り返してきた。 infoment.hatenablog.com 今日は、今まで作ってきたマクロのクラス化に関するお話。 今まで似たような機能のプロシージャを作り溜めるたび、クラスモジュールに まと…

テーブルから別テーブルへの転記 ③ 配列と連想配列の組合せ ~その6.転記先にしかないキーを削除~

前回はテーブル間の転記について、転記する列のラベル名を指定して転記 できるよう、機能拡張してみた。 infoment.hatenablog.com今回は、転記先にしかないレコードキーの扱いについて考えてみる。 例えば、このような場合において。 転記先の「A002:みかん…

テーブル内の8ケタの数字を日付に変換

前回まで、テーブル間の転記についてあれこれとマクロを作ってみた。 infoment.hatenablog.com 今日は、小ネタで閑話休題。 基幹システムなどからデータを受け取って成形するとき、個人的に頻繁に 遭遇するのが ↓ このパターン。 日付がyyyymmdd(数字8桁)…

テーブルから別テーブルへの転記 ③ 配列と連想配列の組合せ ~その5.複数列をラベル名で指定~

前回はテーブル間の転記について、転記元が空白の場合は、転記先へ 上書きする/しないを選択できるようにしてみた。 infoment.hatenablog.com ところで前回までは、一列転記するか全部転記するかの二択だった。 しかし、例えば10列の内7列だけ転記したい場…

テーブルから別テーブルへの転記 ③ 配列と連想配列の組合せ ~その4.空白列を無視~

前回はテーブル間の転記について、転記先にキー情報がない場合は、 キーを追加したうえで情報を転記することに挑戦した。 infoment.hatenablog.com 前回までは、転記元が空白であって転記先に何らかの値が入っている場合、 無条件で空白を上書きしていた。と…

テーブルから別テーブルへの転記 ③ 配列と連想配列の組合せ ~その3.新規レコード追加~

前回はテーブル間の転記について、キー列情報を元にテーブル全体をガバッと転記することに挑戦した。 infoment.hatenablog.com 前回までは、転記元に新規に追加されたレコードのキーが転記先にない場合、 そのレコードは転記されない仕様になっていた。とい…