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

不連続な範囲を選択(失敗談)

不連続な範囲を、お手軽に選択したくなった。 例えば、A1とC3を選択したい場合。 その場合、このような書き方が可能だ。 ちなみに、↓ こう書くと、 Range("A1","C3").Select これは選択範囲の左上と右下を指しており、この間の全セルが選択されてしまう…

「追加したはずの右クリックメニューが表示されない事件」の真相 ⑥

先日来、2年越しの事件が解決しそうだ。 infoment.hatenablog.com今日は、今回のシリーズのまとめ、最終回。 今回新調した、右クリックメニュー追加用クラスモジュール。 自宅で試して限り上手く行ったのに、職場では期待通りの動作に ならなかった。どうし…

「追加したはずの右クリックメニューが表示されない事件」の真相 ⑤

先日来、2年越しの事件が解決しそうだ。 infoment.hatenablog.com先日は、追加しようとする右クリックメニューが追加済みでない場合に限り、追加を実行するところまで作成した。今日は、前回の続きから。 用が済めば、後片付けが必要だ。 そこで、右クリッ…

「追加したはずの右クリックメニューが表示されない事件」の真相 ④

先日来、2年越しの事件が解決しそうだ。 infoment.hatenablog.com今日は前日までの内容のうち、メニュー追加までを纏めてみる。 何とかの一つ覚え、今回もクラスモジュールにまとめてみた。 クラスモジュール(RightClickCommand) 今回の作戦は、こんな感…

「追加したはずの右クリックメニューが表示されない事件」の真相 ③

先日来、2年越しの事件が解決しそうだ。 infoment.hatenablog.com 今日も、先日の続きから。 右クリックメニューを追加する際、他のマクロで追加された別メニューの有無に関わらず、今までは毎回バツンとリセットしていた。 Sub Test() Dim LoopIndex As Va…

「追加したはずの右クリックメニューが表示されない事件」の真相 ②

先日来、2年越しの事件が解決しそうだ。 infoment.hatenablog.com今日は、先日の続きから。 個人的に、追加した右クリックメニューを実行したくなるのは、以下のパターンのとき。 テーブル上のセル又は範囲 ピボットテーブル上のセル又は範囲 上記以外のセ…

「追加したはずの右クリックメニューが表示されない事件」の真相 ①

約2年前、このような記事を作成した。 infoment.hatenablog.com右クリックメニューに追加したはずのコマンドが表示されない。 でもそれは、改ページプレビューで見たのが原因。そんな感じで 締めくくられている。しかし実際はそうではないことを、先日職場…

最初の作りが甘いと、後々まで祟るというお話

1年前作成した ↓ こちら。 infoment.hatenablog.com改築・増築を繰り返した結果、考え方の不一致などが多数生じていた。 そこで今回、数日かけて全て再構築してみた。 再構築したクラスモジュール全文は、上記リンク先に反映済みだ。 更に今回は、配列に新…

ひっくり返して、もう一回ひっくり返す

世の中には、頭のいい人が居るもんだ。というお話。 例えばこのような、5行3列の二次元配列があるとする。 配列のサイズを変更(Redim)する場合、最大次元のみ変更可能だ。 従って、上記の例に於いては、このようになる。 二次元配列に於いては、これをテ…

配列の重複削除 ④ 重複の無い一次元配列を作成するクラスモジュール

先日来、二次元配列の任意の一列から、重複の無い一次元配列作成を試みている。 infoment.hatenablog.com今日は最終回。以前作成したクラスモジュールに、先日作成したユーザー定義関数を含めてみる。 今回行ったのは、以下の三つ。 以前作成したクラスモジ…

配列の重複削除 ③ 範囲やテーブルの任意の一列からも、重複の無い一次元配列を作成してみる

昨日は、二次元配列の任意の一列から、重複の無い一次元配列を作成してみた。 infoment.hatenablog.comしかし、このままでは未だ足りない。もう少し機能拡張してみよう。 ということで、昨日のものを少し弄ってみた。 配列だけでなく、範囲(Range)またはテ…

配列の重複除去 ② 二次元配列から任意の一列を抜き出して新たな配列作成

昨日は任意の一次元配列について、重複除去するユーザー定義関数を考えてみた。 infoment.hatenablog.comしかし実際、自分の場合に限って言えば、一次元ではなく二次版配列の任意の一列を抜き出したうえで重複除去することの方が多い。 そこで、一次元と二次…

配列の重複除去 ① 一次元配列

テーブルの指定列の値を一旦配列に格納し、重複除去してリストを作成するとき、いつも辞書(連想配列)を使っている。 完全にパターン化しているのに、そういえば関数化していなかった。 みんな大好き連想配列は、 key item で構成されている。普通の辞書で…

テーブルに通し番号

テーブルの指定列に、通し番号を付すお話。 例えば、↓こんなテーブルがあるとする。 A列を通し番号にしたいとき、皆さんはどうしているだろうか。 私の知る限り、方法は大別して二つ(というほど大層な話じゃない)。 ベタ打ち 関数で表示 ベタ打ちは、とに…

フォルダの階層構造を書き出してみる ③ ついでにシートに貼り付け

先日、いただいたリクエストに応えて、フォルダの階層構造を書き出してみた。 infoment.hatenablog.comすると、追加でこんなリクエストをいただいた。 「書き出した各フォルダ名に、ハイパーリンクが設定されていたら最高です」 取り組んでみた。まず、ハイ…

フォルダの階層構造を書き出してみる ② ついでにファイルも

先日、いただいたリクエストに応えて、フォルダの階層構造を書き出してみた。 infoment.hatenablog.comといっても、過去記事の焼き直しで、目新しいものは何もない。 ならば、もう少しだけ機能を拡張してみよう。ということで今回は、ついでにファイル名も書…

フォルダの階層構造を書き出してみる

職場で、こんなリクエストをいただいた。 「指定パス以下のフォルダについて、階層構造をExcelに書き出せませんか」ただ羅列するのではなく、階層構造が分かるように書き出せと? 取り組んでみた。 テスト用に、Cドライブ下にフォルダを幾つか準備した。 書…

キャリア別でシートを作成 の続き

先日、配列を編集する自作のクラスモジュール「ArrayEdit」を改修した。 infoment.hatenablog.comしかし、どうにも気持ち悪い。自分でやっておきながら、 「元の配列を書き換える」 という行いが、何だか後ろめたくて仕方ない。ということで何日かかけて、さ…

キャリア別でシートを作成

いつもの、なんちゃって個人情報。 こちらで、キャリア別にシートを作成したくなったとする。 そこで、先日から改修している↓に手を加えてみた。 infoment.hatenablog.com今回も手を加えたのは、RowFilter関数。元々は指定ワードを含むレコードを残すか、ま…

配列のフィルターで指定日の前、或いは後のみのレコードを残す、または削除する

9ヶ月ほど前に、配列を編集する自作のクラスモジュールを纏めてみた。 infoment.hatenablog.comその後、業務などで頻繁に使用しているうちに、幾つか修正点が出てきた。 前回に引き続き今回も、その中の一つをご紹介。 前回紹介した「RowFilte」について、…

配列のフィルターで複数の文字列指定

9ヶ月ほど前に、配列を編集する自作のクラスモジュールを纏めてみた。 infoment.hatenablog.comその後、業務などで頻繁に使用しているうちに、幾つか修正点が出てきた。 今回は、その中の一つをご紹介。 クラスモジュールで、行のフィルター抽出を行うユー…

配列になってなかった(失敗談)

今回は、配列にまつわる失敗談。 例えば、こんな名簿があるとする。 この「名前」の部分を一旦配列に格納して、処理したいと考えた。 Sub Test() ' テーブルを変数に格納。 Dim Tb As Excel.ListObject Set Tb = ActiveSheet.ListObjects(1) ' 名前の列を配…

ワイルドカードは何個あってもいい?(Like演算子)

ふと、思った。ワイルドカードって、複数あっても良いのか? 例えばLike演算子を使って、こんな評価をしてみる。 結果は、「True」。つまり、「り」と「ご」で挟んだ何某かの文字「*」を 「り*ご」とするならば、「りんご」はこれと似ているという訳だ。 ち…

多重ループからの脱出

たまに、多重ループから抜けたいとき、「どうだっけ?」と迷うことがある。 例えば、こんなとき。 Sub Test() Dim i As Variant Dim j As Variant For Each i In Array(1, 2, 3) For Each j In Array("一", "二", "三") If j = "三" Then Exit For Else Debu…

小計と合計(SUBTOTAL関数)

今日は職場で、小計と合計を求める、とても便利な方法を教わった。 割とよく、こんな表を見かける。 小計と合計に設定された数式を見てみると、こんな感じだ。 「合計」の部分は、小計を一つずつ選択しながら足している。二つぐらいなら我慢できるが、5つも…

次の「13日の金曜日」 リターン

2年ほど前に、↓こんなブログを書いていた。 infoment.hatenablog.com読み返してみると、う~ん・・。当時の詳細な記憶は無いが、恐らくこれを書いた時は、未だ「Edate関数」を知らなかったに違いない。この時のロジックは、 金曜日が13日か調べる。 13日で…

少しずつ戻ってきた日常

非常事態宣言が明けて半月、少しずつ日常を取り戻している。 5ヶ月ぶりに、実家(県内)に顔を出した。 3か月ぶりに、ピアノを再開した。 3か月半ぶりに、空手の稽古を再開した。 今練習しているのは、昔懐かし、Energy Flow。 www.youtube.comたまに出て…

シートを非表示にしても、保護したことにならない

例えばSheet2に、名簿マスターがあるとする。 マスターであるからして、誰かが誤って編集しないよう保護したい。 実はその昔なぜか、シートを非表示にすれば保護できると思っていた。もっと言えば、ブックの保護でシート構成を保護対象にすれば、もう 完璧だ…

二つのキーでレコードを特定

昨日は、テーブル内のレコードをMatch関数とIndex関数で参照してみた。 infoment.hatenablog.com昨日はまだ、品名だけを頼りに単価を求めればよかった。しかし現実は、 そう甘くなかった。 今回は、こんな価格表。大分類が大まかに、中分類で詳細を区分して…

やはりマッチとテーブルは相性がいい?

ここ最近、毎日Excelでシステム作成に勤しんでいる。 私個人のスキルと照らし合わせてみれば、かなり大規模なシステムだ。 その中で、Match関数を使う機会があった。 いつもなら、マクロで値をセットするところ。しかし今回は、特定の場面でマクロを使えない…