クラスモジュール

二次元配列で列を編集

昨日までは、二次元配列で様々な「行の編集」を行ってきた。 infoment.hatenablog.com infoment.hatenablog.com infoment.hatenablog.com infoment.hatenablog.com infoment.hatenablog.com infoment.hatenablog.com今回は一旦これから離れて、列の編集につ…

二次元配列で列をフィルター(正規表現)

昨日は、二次元配列の指定列内で、特定の文字がある行を残す、または消すことに挑戦した。 infoment.hatenablog.comここまで来ると次は正規表現を用い、もう少しだけ複雑な抽出をしてみたくなる。挑戦してみよう。 といっても、内容は昨日と殆ど変わらない。…

二次元配列で列をフィルター

一昨日は、二次元配列内の任意の二行を入れ替えることに挑戦した。 infoment.hatenablog.com本日は、指定列内に特定の文字がある行を残す、または消すことに挑戦する。今回は、以下の4条件を個別に満足するフィルターを作ってみよう。 部分一致 または 完全…

二次元配列で任意の二行を入れ替え

昨日は、二次元配列で任意の一行をカット&挿入することに挑戦した。 infoment.hatenablog.com今日は、今までに作ったものの組合せで、任意の二行を入れ替えることに挑戦。 今回は、昨日作成したものを二回連続で行うことで実現する。 片方を切り取って、入…

二次元配列で任意の一行をカット&挿入(再挑戦)

昨日は、二次元配列で任意の一行に対し何某かを挿入する際、xlUPとxlDownを選択できるようにした。 infoment.hatenablog.comこの結果を踏まえ、先日の ↓ に再挑戦する。 infoment.hatenablog.com昨日も紹介したように、xlUPで上に押し上げるということは、指…

二次元配列で任意の一行に空白挿入 xlUP or xlDown

昨日は、二次元配列で任意の一行に対し、以下を行うことに挑戦した。 コピー または カット 挿入 または 貼り付け infoment.hatenablog.com一見上手くいったような結果を得たが、残念。最後尾に挿入する場合、上手くいかない。そりゃ、そうだ。現時点では、…

二次元配列で任意の一行を「コピー or カット」して「挿入 or 貼り付け」

昨日は二次元配列で、任意の一行に以下を行うクラスモジュールを作成した。 削除 空白化 空白挿入 infoment.hatenablog.com本日は更に、以下を加えることに挑戦する。 コピーまたはカット 挿入または貼り付け クラスモジュール(ArrayEditClass) まず、モー…

二次元配列で任意の一行を「削除」「空白化」「空白挿入」

昨日は、二次元配列で任意の一行を削除するために、クラスモジュールを二段階で作成してみた。 infoment.hatenablog.comでも、前々回に引き続き、やっぱり何だかスッキリしない。そこで今日は、更なる改良に挑戦する。 前回は、このようなコードになった。 a…

二次元配列で任意の一行を削除 の続き

昨日は、二次元配列で任意の一行を削除して、上に詰めることに挑戦した。 infoment.hatenablog.comしかし、どうもスッキリしない。そこで今日は、昨日の続きに挑戦する。 もともと、シートに対してならば、このような表記ができる。 Range("A4").EntireRow.D…

有効 ⇔ 無効の切り替えが面倒くさくなった話(邪道?)

Excel VBAにおいて、処理の高速化といえばこれ。 Application.ScreenUpdating = False 画面の更新を一時停止することで、処理の高速化が望める。また、シートのチェンジイベントに於いて、忘れてならないのがこれ。 Application.EnableEvents = False 例えば…

阿弥陀編:最終回 ~クラスモジュールへの旅~

先日は、あみだくじを一斉にスタートさせることで、結果が出るまでの待ち時間を短縮してみた。 infoment.hatenablog.com本日は、阿弥陀編の最終回(と、「火の鳥」っぽい題名を付けてみた)。 といっても、行ったのは以下の二つ。 クラスモジュール化(ワン…

コンボボックスのリストを、選択頻度の高い順に並び替えてみる

このような課題を見かけたので、自分なりに考えてみた。 UserFormのコンボボックスに出てくるリストについて、選択回数が多いものを上に表示させたい。 リストの並び順を、動的に変更したいとのこと。しかも、前回選んだものが今回トップに来るのではなく、…

プルダウンリストを作成する ④ 表示する順序を指定 の続き

先日は、プルダウンリストを作成する際に、リストの表示順序を明示する方法を考えてみた。 infoment.hatenablog.comこの中で、二次元配列のソートを突貫工事で作成したところ、なかなかの欠陥物件になってしまった。 ※数字を文字に置き換える過程で、正しく…

数独をVBAで解いてみる ⑤

昨日は、数独をVBAで解くコードに新たなロジックを追加してみた。 infoment.hatenablog.com今日も、新たなロジックの追加に挑戦する。 今回は、「2つの数字のどちらが入るか分からないが、必ずどちらかが入る」場合について考える。それは例えば、このよ…

数独をVBAで解いてみる ④

昨日は、数独をVBAで解くコードに新たなロジックを追加してみた。 infoment.hatenablog.com 今日は、答えが出るまで繰り返し処理を行わせることに挑戦する。 単純に繰り返すなら、For ~ Next ループが手っ取り早い。 Sub Sample() Dim i As Long For i = …

数独をVBAで解いてみる ③

昨日は、数独をVBAで解くコードを作成してみた。 infoment.hatenablog.com まずは基本的ロジックを押さえ、入門レベルであれば解けるところまで作成した。 そこで本日は、昨日の内容について、更にロジックを追加してみる。 昨日は、指定マスについて行列…

数独をVBAで解いてみる ②

昨日は、数独をVBAで解くための前段として、どのような形で解析すれば良いかについて検討してみた。 infoment.hatenablog.com そこで今日からは、実際に解を求めるべく、コードの作成に挑戦する。 今回は、数独解析用に「Sudoku」クラスを作成した。 また…

ゴールシークとマクロ ③ コレクションのソート

昨日は、複数の解を持つゴールシークマクロについて、成功か!?と一瞬思うところまでたどり着くことが出来た。 infoment.hatenablog.com しかし、実際は不充分。解が5つ以上の場合も、4つまでしか答えが出ない。 なんでだろう。 そこで今日は、その解決に…

ゴールシークとマクロ ② クラスモジュール化(2)

昨日は、複数の解を持つゴールシークマクロについて、サブプロシージャをクラスモジュールに移植してみた。 infoment.hatenablog.com 昨日は、複数解の有無を返すフラグを作成するところまでで力尽きた。 そこで今日は、昨日の続きから再開する。 今回立てた…

ゴールシークとマクロ ② クラスモジュール化(1)

昨日は、ゴールシークの結果が本当にゴールなのか(=途中で力尽きて倒れていないか)を確認してみた。 infoment.hatenablog.com 今日は、今までの結果をクラスモジュールに移植してみる。 ゴールシークにおいて、計算式が入っているセルと値を変化させるセ…

作成した年月週の表ラベルに実際の値を充て込んでみる ④ 完

昨日は、作成した年月週の表ラベルに既存の値を転記し、更に重複する文字をラベルから消してみた。 infoment.hatenablog.com 今日は、今回の最終回。入出庫情報を元に、在庫の推移表として編集してみる。 現時点での表は、こんな感じだ。 この表の最終目的は…

作成した年月週の表ラベルに実際の値を充て込んでみる ③

昨日は、作成した年月週の表ラベルを扱いやすい形に編集し、既存の値を転記してみた。 infoment.hatenablog.com 今日は更に、表の値が元の書式に戻すため、不要な値を消し込むことに挑戦する。 必要な情報は全て、昨日までに記入済み。従って今日は、さほど…

作成した年月週の表ラベルに実際の値を充て込んでみる ②

昨日は、作成した年月週の表ラベルの値を充て込むために、元の表を扱いやすいよう編集してみた。 infoment.hatenablog.com今日は更に、既存の値を転記するための辞書を作成することに挑戦する。 昨日、ラベルの文字を配列内で編集したのは、ラベルの文字を辞…

年月週の表ラベルを作成する

昨日まで、指定した開始日から最終日までに含まれる週の数を知るために、クラスモジュールを作成していた。 infoment.hatenablog.com 目的は、↓ のような変換を行う必要に迫られたため。 そこで今日は、まず、年月週の表ラベルを作成することに挑戦する。 今…

月を跨ぐ週の数を「2」と数えてみる(訂正)

昨日は、ある期間に週がいくつあるかを数える際、月を跨ぐ週を「2」と数えるためのクラスモジュールを作成してみた。 infoment.hatenablog.com ところが、公開した後に、いくつかの誤記と考慮漏れに気づいた。そこで、今日はまず、昨日の誤記をコッソリ訂正…

月を跨ぐ週の数を「2」と数えてみる

必要に迫られて、月を跨ぐ週を別物として扱うことになった。 例えば、↓こんな感じ。 これを踏まえたうえで、例えば4月1日~5月31日までの週数を求めたい。 色々と関数を作ってみたが、場合分けごとに関数が増えてしまい、扱いがとても煩雑になってしま…

カレンダーを作成するマクロをクラスモジュールに移植する

昨日は、一括で作成した複数月のカレンダーについて、良い感じの位置とズームで表示させてみた。 infoment.hatenablog.com 今日は、最近では恒例の「作成したものをクラスモジュールにしたら」に挑戦する。 毎度の話だが、別に無理にクラスモジュールにする…

クラスモジュールに移してみる

昨日は、書類の提出状況に対応する色でセルを塗りつぶして見える化するプロシージャについて、その内容を幾つかのプロシージャに分割してみた。 infoment.hatenablog.com 今日は更に、その幾つかをクラスモジュールに委ねてみる。 まず、クラスモジュールを…

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

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

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

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