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

連続する数字は「~」で、不連続な数字は「,」で連結するユーザー定義関数(設問編)

マクロで以下のようなことが出来ないか、職場で問い合わせを受けた。 ・連続する数字は「~」で繋ぎたい。 ・不連続な数字は「,」で繋ぎたい。 ・共通部分の表示は省略したい。具体的には、こんな感じだ。 1,2,3,4 ⇒ 1~4 101,103,104…

チェックボックスまとめ

昨日は、作成したチェックボックスのグループ番号更新に挑戦した。 infoment.hatenablog.com今日は締めとして、今回シリーズのコードをまとめて紹介する。 最終的に、ユーザーフォームはこのようになった。 番号 種類 オブジェクト名 Caption 備考 ① UserFor…

チェックボックス(フォームコントロール)のグループ番号を更新する

昨日は、選択したチェックボックス(フォームコントロール)の名前を変更することに挑戦した。 infoment.hatenablog.com今日は、グループ番号の更新に挑戦する。 今までの方式の場合、新たなグループを作成するごとに、グループ番号の「最大値+1」を新規グ…

選択したチェックボックス(フォームコントロール)の名前を変更する

昨日は、何度も登場する似たようなプロシージャを纏めてみた。 infoment.hatenablog.com 今日は、選択したチェックボックス(フォームコントロール)の名前を変更することに挑戦する。 単純にチェックボックスの名前を変更するだけなら、あまり難しくない。 …

何度も登場する似たような箇所を纏めてみる

先日は、リストボックスで選択したチェックボックス(フォームコントロール)と同グループに属すものを、一括で選択することに挑戦した。 infoment.hatenablog.com今日は、次の段階に進む前に、何度も登場する似たような箇所を纏めてみる。 何度も登場するの…

同じグループのCheckBox(フォームコントロール)を全て選択する。

昨日は、リストボックスで選択した任意のチェックボックス(フォームコントロール)でグループを作成し、一つしか選択できないようにしてみた。 infoment.hatenablog.com今日は、リストボックスで選択したチェックボックスと同グループに属すものを、一括で…

指定したCheckBox(フォームコントロール)でグループを作成し、一つしか選択できないようにする。

昨日は、リストボックスで選択した任意のチェックボックス(フォームコントロール)を削除してみた。 infoment.hatenablog.com今日は、リストボックスで選択した任意のチェックボックス(フォームコントロール)でグループを作成し、一つしか選択できないよ…

CheckBoxを全部選んで削除する

昨日は、リストボックスの複数選択可否をチェックボックス(ActiveXコントロール)で操作することで、ユーザーフォーム内のコードをスッキリさせることに挑戦した。 infoment.hatenablog.com今日は、リストボックスで選択した任意のチェックボックス(フォー…

ListBoxの複数選択可否を切り替える

昨日は、選択したCheckBox(フォームコントロール)のキャプションを変更することに挑戦した。 infoment.hatenablog.com一応、予定した動作は実現できたものの、リストボックスの選択数によって判断する箇所が多く、(個人的に)どうもスマートでない。そこ…

選択したCheckBox(フォームコントロール)のキャプションを変更する

昨日は、リストボックスに表示したチェックボックス(フォームコントロール)の一覧において、リスト上で選択した名前に対応するチェックボックスの色を変えることに挑戦した。 infoment.hatenablog.com今日は、選択したリストボックスのキャプションを変更…

ListBoxで選択したCheckBoxの色を一時的に変更する

先日は、選択範囲の文字列をチェックボックス(フォームコントロール)に置き換えることに挑戦した。 infoment.hatenablog.com今日は、シート上にあるチェックボックスをユーザーフォームのリストボックスに表示し、さらに、選択したチェックボックスの色を…

選択範囲の文字列をチェックボックス(フォームコントロール)に置き換える

先日は、選択セルにチェックボックスを配置する関数に挑戦した。 infoment.hatenablog.comそれで、実際にどのような使い方が良いか、色々と思案してみた。 ああでもない、こうでもないと悩むこと二日。 結局シンプルに、次の用法に落ち着いた。 選択範囲の文…

チェックボックス(フォームコントロール)を任意のセルに配置する関数

先日来、フォームコントロールのチェックボックスを、アレコレすることに 挑戦している。 infoment.hatenablog.comその過程で、任意の位置にチェックボックスを幾つか配置しているのだが、 これが面倒くさくなってきた。そこで今回は、チェックボックスを任…

複数のチェックボックスで、一つだけチェックを入れたい ②

昨日は、12個のチェックボックスの内、一個だけが選べるようにしてみた。 infoment.hatenablog.comしかしこの方法だと、チェックボックスが複数のグループに分かれている場合に、とても都合が悪い(グループを無視して、一個しか選べないため)。そこで今…

複数のチェックボックスで、一つだけチェックを入れたい ①

以前、下記内容でブログを書いた。 infoment.hatenablog.comしかし実際に使う機会は、ほとんど来なかった。 まずチェックボックスには、以下の二通りがある。 フォームコントロール ActiveX コントロール 私がもっぱら使うのは、ActiveXコントロール。 だか…

10件転記したら、シートを変えて転記再開。

職場で、このような相談を受けた。 ある表からある帳票に、データを10件ずつ貼り付けたい。 毎回、データ数は異なる。5件の時もあれば、55件の時もある。 パソコンが無かったので、この時はホワイトボードに書いて説明した。 本当にそれでうまくいくか、簡…

インスタンスを破棄するタイミング(失敗談)

大変な勘違いをしていた。 サブプロシージャ内で生成されたインスタンスは、 サブプロシージャ終了時に、自動的に破棄される。 従って最近個人的に流行りの下記も、 With New Class1 てっきり、サブプロシージャ終了時に破棄されるものと思い込んでいた。 し…

? 1=1 はい、そうです。

昨日、ExcelVBAerさんから頂いたコメントを見て、あることを思い出した。 それは、Select Case でLike演算子を使う場合のこと。 docs.microsoft.com以前職場で、「Trueを付ける」と教わった。↓ こんな感じで。 Select Case True その時は、Select Case 特有…

複数条件で絞り込む(配列)

昨日に引き続き、ArrayEditクラスの機能拡張に挑戦。 今日は、複数の条件で配列を絞り込んでみる。 今日も、なんちゃって個人情報のお世話になる。 今回は、5000人分の情報をダウンロード。この中から、以下を抽出する。 男性 既婚 愛知県在住 ドコモユ…

二次元配列で指定列の値のうち、指定値以上の行だけ残したい

二次元配列で指定列の値のうち、指定値以上の行だけ残したいケースが登場した。例えば、↓ このような値において、 ↓ このようにしたい。 そこで、先日来取り組んできたクラス「ArrayEdit」の機能拡張に挑戦した。 折角なので、以下の選択肢全てに対応させて…

ファイル名変更

業務で、連続して複数のファイルに対し、ある特定のルールで名称変更 することになった。今から作って、明日早速試してみよう。 名前を変更するには、Nameステートメントが便利だ。 docs.microsoft.com ' 構文 Name A As B A:変更前のファイルパス B:変…

他のブックにあるマクロを呼び出したとき、そのブックを最小化したい

本日唐突に、他のブックにあるマクロを呼び出したとき、 そのブックを最小化したい事案に遭遇した。 あれこれ捏ね繰り回し、結果、これに落ち着いた。 Sub Sample() ThisWorkbook.Activate ActiveWindow.WindowState = xlMinimized End Sub もっと単純にでき…

二次元配列の一部を抽出:指定列番号順にスライス

最近、これの存在を知った。 docs.microsoft.com何ということでしょう。これがあれば、簡単に配列をスライスできる。 今までの苦労は何だったのか。 本日も、毎度おなじみ「なんちゃって個人情報」のお世話になる。 例えば、一旦表全体を配列に格納したのち…

辞書のキーとアイテムで二次元配列作成

辞書(連想配列)のキーとアイテムで、二次元配列を作りたくなる場面に遭遇。そういえば、テーブル内の指定した二列で辞書を作る関数を作成したことはあったが、その逆は無かったな。 infoment.hatenablog.comというわけでな、今回はこれに挑戦してみた。 と…

End If で終わらない If

昨日は、With について試してみたところを紹介した。 infoment.hatenablog.comその後、thomさんに解説をいただくことが出来た。 (いつも、ありがとうございます)。この方式について、使い処を色々考えてみた。思いついたのが、↓ こちらで作成したクラスモ…

変数の省略

例えば、こんなサブプロシージャがあったとする。 Sub test_1() Dim myReg As RegExp Set myReg = New RegExp myReg.Pattern = "[\w]+" Debug.Print .test("aaa") Debug.Print .test("あああ") End Sub 変数を宣言し、初期化し、その後の処理を行う。よくあ…

トーナメント作成 ⑥ クラスモジュールへの移植

昨日はリストの上位にいる選手が、優先的にシード選手になるようにしてみた。 infoment.hatenablog.com今日は、本シリーズ最終回。一応完成(のつもりです)。 といっても、ほとんどは昨日の内にできている。今日はいつものごとく、作成したそれをクラスモジ…

トーナメント作成 ⑤ 指定番数以降をランダムに並べ替え

昨日は、トーナメント表に、如何にして選手を並べるかに挑戦した。 infoment.hatenablog.com今日は、昨日の続きに挑戦する。 まず8人を一塊として考えている関係上、8人以下の場合は一般式に充てられないような作りにしてしまった。そこで2~8人の場合は…

トーナメント作成 ④ 前回の上位者をシード選手に

昨日は、トーナメントの箱だけを取り敢えず作成した。 infoment.hatenablog.com今日は、このトーナメント表に人を充てる順番を求めてみる。 トーナメント表において、一回戦がピッタリ埋まるのは2のn乗の場合。 2の1乗 参加選手は2人 1回戦まで 2の2…

トーナメント作成 ③ 箱を罫線で繋ぐ

昨日は参加人数に合わせて、一回戦から優勝までの人名記入用セルを配置した。 infoment.hatenablog.com今日は、この箱を罫線で縦横つなぐことに挑戦する。 さて、まず横の線だが、これは名前のセルを結合する前に引いておくことにした。 次いで、昨日のコー…