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

進捗を確認する ② 残り時間を推測する

昨日は何某かの処理状況を、ステータスバーで見える化してみた。 infoment.hatenablog.com ところで進捗と合わせて、もう一つ知りたいものがある。それは、完了までの残り時間だ。そこで今回は、完了までの残り時間を推測して表示することに挑戦する。 とい…

進捗を確認する

処理中に、進捗状況を知りたい時がある。処理速度に影響するらしく、多用は出来ないが、そんな時は「ステータスバー」を使う方法がある。 Excel VBAでは以下で、ステータスバーに任意の文字を表示することが出来る。 Application.StatusBar = "任意の文字" …

変数の名前から思い出した二つのこと

とある部署の方から、ツールの作成依頼を受けた。作るだけでなく、メンテナンスもできるように担当者を教育して欲しいとのこと。そこで(勿論、そうでなくともだが)変数名には極力分かり易い名前を付けようと思った。 例えば先月分のシートをコピーして今月…

新しく作った方が早い

機械設計していて、他の方が描いた図面を流用しようとするとき。 特に、それが3次元データである場合に、こんなことが有る。 明らかに、2次元と3次元の形状が違う。 2次元と3次元で何だか微妙に違うが、どこが違うか分からない。 設計変更で2次元が修…

Duplicateで旋回運動の続き:放射+分身+残像(完成)

昨日は、円を旋回運動させるマクロにおいて、指定数の分身を指定数の残像を残すことに挑戦した。 infoment.hatenablog.com 結果、何とか思った通りの動きをさせることが出来た。ただ、円周上に突然円が登場するので、唐突感が否めない。そこで今回は更に動作…

Duplicateで旋回運動の続き:残像+分身

昨日は、円を旋回運動させるマクロにおいて、残像に加え分身を配置することに挑戦した。 infoment.hatenablog.com しかし、これが中々上手くいかない。思い切って、考え方を逆にしてみた。 今までは、下記のような手順で作成していた。 最初に、限定的な場合…

Duplicateで旋回運動の続き:残像+分身(道半ば)

昨日は、円を旋回運動させるマクロにおいて、旋回角度に関わらず一周の時間が一定になるよう工夫してみた。 infoment.hatenablog.com 今日は更に、残像ではなく分身させることに挑戦する。ということで、新たな引数「PhantomNumber」を設けた。ところが、な…

Duplicateで旋回運動の続き:初めてのSleep関数

昨日は、円を旋回運動させるマクロにおいて、旋回角度に連動して旋回半径と旋回中心が変化する不具合を何とか解消した。 infoment.hatenablog.com すると、別の問題が見えてきた。旋回角度が大きくなっても、一瞬止まる時間は変わらないため、早く回りきって…

Duplicateで旋回運動の続き:汎用化に挑戦

昨日はオートシェイプをグルグルと回して遊んでいたら、実は旋回中心と旋回半径が可変になっていることに気づいた。 infoment.hatenablog.com これはイカン。すぐに直さないと。 まず、旋回中心と半径が可変にならないよう、固定値にした。 今までは、以下の…

Duplicateで旋回運動の続き(失敗談)

昨日は、オートシェイプを複製しながらグルグルと回して遊んでみた。 infoment.hatenablog.com そこで、さらに汎用性を持たせるために、まずクラスモジュールに移植してみた。 クラスモジュール(DuplicateShapeClass) Option Explicit Function GetRadius(…

Duplicateで旋回運動

昨日は、オートシェイプを連続的に、残像付きで直線運動させてみた。 infoment.hatenablog.com 昨日が直線運動だったので、今日は旋回運動に挑戦する。 まず私の理解するところでは、回転と旋回には以下の違いがある。 回転:回転軸が自身の内にある 旋回:…

Duplicateでツインビー(分身)

昨日は、残像をがあるかの如くオートシェイプをコピーして遊んでみた。 infoment.hatenablog.com イメージとしては、往年のシューティングゲーム「ツインビー」の分身モード。そこで今回は、昨日の「決め打ち」部分を減らすことに挑戦する。 今回の目標は、…

オートシェイプのコピー(Duplicate)

ふと、思った。オートシェイプを、Ctrlキーを押しながらクリックするとコピーできるあれ、どのようなコードで書けるのか。 早速、マクロの記録で確認してみる。 雑味を除くと、こんな感じになった。 Sub Macro1() ActiveSheet.Shapes.Range(Array("Oval 1"))…

プロシージャを呼び出すときの()

先日、職場の勉強会で話題に上がったので、備忘録として記しておく。例えば、こんなサブプロシージャがあったとする。 Sub Calc(a As Double) MsgBox a * 1.5 End Sub aという値を受け取って、メッセージボックスにaの1.5倍の数値を表示する。次に、このよう…

柿×食う=客 ⑥ クラスモジュール化(一応完成)

昨日は、算数パズルを解く汎用マクロの完成を目指し、あれこれとクラスモジュールをいじってみた。 infoment.hatenablog.com 今回は、広げた風呂敷を綺麗に畳むことに挑戦する。 今回は、昨日までに作成したものを、更に発展させてみた。 数式を引数として、…

柿×食う=客 ⑤ クラスモジュール化(未だ道半ば)

昨日は、算数パズルを汎用的に解けることを目標に、様々な情報を抽出してみた。 infoment.hatenablog.com 今回は、先日抽出したものをクラスモジュールに移植して、 更にあれこれといじってみた。 とは言え、未だ道半ば。何となく見えてきたような気がするが…

柿×食う=客 ④ 重複確認のタイミングを変えてスピードアップ

一昨日は、「かき×くう=きゃく」のコードの簡素化に挑戦した。ところが、文字の重複確認をユーザー定義関数で外出ししたところ、極端に処理速度が落ちてしまった。 infoment.hatenablog.com そこで今回は、原因調査も含めて、さらに汎用性を高めてみる。 と…

柿×食う=客 ③ 手計算でやってみる

一昨日から、算数パズル「かき×くう=きゃく」を、マクロによる総当たり計算で解いてみている。これについて、実際の解法についても話題となったので、私なりに解いてみることにした。 様々な解法があるのは間違いない。あくまで、回答の一つということで。 …

柿×食う=客 ② ループを極力減らす

昨日は、算数パズル「かき×くう=きゃく」を、マクロで無理やり解いてみた。 infoment.hatenablog.com この問題では、「か・き・く・う・や」で表される5つの数字が登場する。従って昨日は、何も考えずにFor ~ Nextの5重ループを作成して問題を解いた。し…

柿×食う=客

中学二年の時、数学の先生が算数パズルを出題した。 答えを聞かぬまま私が転校してしまい、今に至る。ふと思い出し気になったので、Excelで無理やり解いてみよう。 出題内容は、こうだ。 かき×くう=きゃく 条件 それぞれの平仮名に、数字が一つ入る。 同じ…

プリンタの一覧を取得してリストボックスに表示

今日の職場での勉強会テーマ。備忘録としてここに残しておく。 テーマ:プリンタの一覧を取得して、リストボックスに表示する。 参照設定 プリンタの一覧を取得するために、参照設定を行う。 「Microsoft Shell Controls And Automation」 いつものように今…

残酷な方程式

25年前に読んで以来 定期的に、この小説のことを思い出す。「残酷な方程式」 ロバート・シェクリー著残酷な方程式 (創元推理文庫 (614‐2))作者: ロバート・シェクリー,酒匂真理子出版社/メーカー: 東京創元社発売日: 1985/02メディア: 文庫購入: 2人 クリ…

条件付き書式で、訂正線が引かれたセルを塗りつぶす

条件付き書式で、訂正線が引かれたセルを塗りつぶしたい。さて、どうしよう。 先日、職場で教わったのは、こんなやり方。 ユーザー定義関数を作成 まず、確認したいセルを引数として、訂正線が引かれている(True)か否(False)かを戻り値とするユーザー定…

リストボックスから二つだけ選ばせたい ④ 投票した結果を集計する

昨日は、リストボックスで選んだ二つの項目を投票してみた。 infoment.hatenablog.com 今日は、投票結果の集計に挑戦する。 昨日は投票のために、特定フォルダにテキストファイル(ファイル名:選択項目)をため込む方式とした。 選択した食べ物の名前_年月…

リストボックスから二つだけ選ばせたい ③ 選んだ二つを投票する

昨日は、リストボックスから二つ選ぶために、「選択結果が三つ以上にならない」仕様にしてみた。 infoment.hatenablog.com 折角なので、今日は選んだ二つを投票することに挑戦する。 選んだ二つを、どのように「投票」するか。恐らく様々な方法があるのだろ…

リストボックスから二つだけ選ばせたい ② 三つ以上選ばせない

昨日はリストボックスから二つだけ選ばせる方策として、選択数が二つ以外の時は投票ボタンを無効化してみた。 infoment.hatenablog.com しかしこの方法だと、選択項目が100個ある場合、100個全て選べてしまう。98個分の選択解除を行うまで投票ボタン…

リストボックスから二つだけ選ばせたい ① 投票ボタンを押させない

以前、こんな相談を受けたことがあった。 複数の人に投票してもらう案件がある。 複数ある候補から、2つ選んで投票する。 必ず2つ選んで投票して欲しい。 2つというのが、なかなか悩ましい。 一つの場合:ListBox1.MultiSelect = fmMultiSelectSingle 複…

一行のコードで終わらせる ②-3 使いどころ

昨日は、指定フォルダ内にある全ファイルのパスを取得する「一行のコード」について、これを可能な限り分解して理解することに挑戦した。 infoment.hatenablog.com こういうことかな?と、何となく理解しつつも、業務用ツールに組み込むのは躊躇われる。なぜ…

一行のコードで終わらせる ②-2 一行を分解してみる

昨日は、指定フォルダ内にある全ファイルのパスを取得する「一行のコード」(※自作ではありません)を紹介した。 infoment.hatenablog.com 自作ではない悲しさで、不明の部分が多々あった。そこで今回は、これを可能な限り分解して、理解してみようと思う。 …

一行のコードで終わらせる ②-1 指定フォルダ内のファイルパス取得

昨日は、特定列の空白セルを行ごと削除するマクロについて紹介した。 infoment.hatenablog.com 今日は指定フォルダ内にある全ファイルの、ファイルパス取得について紹介する。 例えば「C:\Temp」フォルダに、以下4つのファイルがあるとする。 Dir関数で取得…