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

Property Get プロシージャの使い方(私見)

クラスモジュールを少しだけ学んだ結果、Property Getプロシージャの存在を知った。しかもこちらは、標準モジュールやシートモジュールでも使うことが出来る。一体、どんな時にどう使えば良いのだろう? 正しい使い方は、専門書やプロの方に丸投げでお任せす…

今日は、今月の第何週目?

指定日が、指定月の第何週目かを知る必要があった。 そこで、Excel のユーザー定義関数で求めてみることにした。 今日は、2月27日。なので今日の日付を引数として、戻り値は、何週目かを表す数値にしよう。 色々な方法があると思うが、私はこう考えた。 …

辞書(連想配列)に0から始まる数値を登録する際の注意点

商品名を管理するコードがある。仮に今は、6桁の数字だとしよう。 このコードは、管理の都合上、ゼロパディングされている。 例) 12345 ⇒ 012345 123 ⇒ 000123 このように6桁に満たない数字は、6桁になるよう先頭に0を付される。 ※ゼロパディング ⇔ ゼ…

ピボットテーブルのフィルターで、特定の文字列を含まないものだけを表示させる

CSVデータ集計に、Excelのピボットテーブルを用いることがある。定例業務のためVBAでツールを作成して運用していたところ、ユーザー部門から 「〇〇という言葉が含まれる場合を除外したい」 というリクエストがあったので挑戦してみた。 業務の様子を疑似的…

メンテナンスフリー

昨晩寝る前に、寝室の電気を豆球(ナツメ球?)に切り替えようとした。しかし、スイッチを何度切り替えても、豆球の明かりにならない。どうやら、豆球が切れてしまったようだ。 豆球とLED 随分と前に、LEDに切り替えることを検討したことがある。豆球…

テーブルのフィルターボタン(失敗談)

テーブルとして書式設定を行うと、自動でフィルターボタンが付される。 これがラベルの文字と重なって、同文字を見え難くすることがよくある。 これは、フィルターボタンのチェックを外すことで、非表示化が可能だ。 CSVから取り込んだデータをテーブルと…

ピボットテーブルのバージョンを指定しないとどうなる?(失敗談)

定期的に、ピボットテーブルをマクロで作成したくなることがある。そこで試しにマクロの記録で作ってみて、少し整理すると、このような記述になる。 Sub Test() Dim Tb As ListObject Set Tb = ActiveSheet.ListObjects(1) Dim Sh As Worksheet Sheets.Add S…

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

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

幾つかのプロシージャに分割してみる

昨日は、書類の提出状況に対応する色でセルを塗りつぶし、見える化したいという要望に応えてみた。実際はこれをテーマとし、職場で行った勉強会の内容をなぞってみた。 infoment.hatenablog.com 今日はその発展形として、まずは一つだったプロシージャを幾つ…

書類の提出状況に合わせてセルを塗りつぶす(見える化)

昨日は、指定したコードが別の表にあるかどうかを確認し、それに関連する書類の提出状況を取得してみた。 infoment.hatenablog.com 今回一連の問い合わせをくださった方は、更に、 提出状況に対応する色でセルを塗りつぶして見える化したい とのことだった。…

指定したコードが、別の表にあるかどうかを確認する。

先日は、セル内で二回改行された二段目に記された、管理番号を取り出すことに挑戦した。 infoment.hatenablog.com 取り出したいからには、取り出した後に何かしたい訳で。 前回受けた問い合わせは、さらにこう続く。 別のシートには、当該管理番号ごとに必要…

セル内で2回改行された真ん中の行だけを抜き取る

職場で、こんな質問を受けた。 セル内で2回改行された真ん中の行だけを抜き取りたいんだけど、どうすればいい? そこで、職場の勉強会でテーマにしてみた。対象は、こんな感じだ。 1行目:会社名 2行目:案件管理番号(アルファベット1文字+数字6文字…

配列の一部を抽出して、新たな配列として返すユーザー定義関数

以前、このようなものを作成して紹介した。 infoment.hatenablog.com ところが最近、これでは間に合わない事例が出てきたので、思い切ってもう一つ作ることにした。 といっても、特別なことをするわけではない。二次元配列に限定して、抜き出したい行と列の…

動きを付けて、気付いてもらう(セル内でスクロール)

何か注意書きをしても、気付く人は気づくし、気付かない人は気づかない。当たり前の話だ。しかも悪いことに、 注意書きに気づく人は、書かれているようなことを日頃から注意している。 注意書きに気づきにくい人は、どれだけ工夫を凝らしても、やっぱり気づ…

二次元配列のReDim(失敗談)

こんな二次元配列があったとする。イメージを伝えやすくするため、Excelのテーブルで表現してみる。 それで、とある理由から、上記の表1列目に相当するデータが不要になった。 そこで、このように考えた。 Redimで配列の要素数を「1~11」(図ではA~K列…

キーボードでのショートカット使用に向いている人

Excelに限らず、代表的なショートカットといえば、例えばこれ。 Ctrl + C コピー Ctrl + V 貼り付け もしショートカットが無かったら、作業性はどこまで落ちるだろう。ゾッとする。 日々、CADを用いて作図する身としては、Excelでのショートカットより…

指定フォルダ内のファイル名を、様々な順番で取得(対応策)

昨日は、様々な条件を指定して、指定した順番にファイルパスを取得する関数を作成した。そして、見事失敗。指定した何某かが重複する場合、どちらか一方しか取得できない作りにしてしまっていた(連想配列の仕様)。そこで今回は、その対応に挑戦する。 (↑C…

指定フォルダ内のファイル名を、様々な順番で取得(失敗談)

先日は、指定フォルダ内にある「一番最後に更新されたファイル」を取得してみた。 infoment.hatenablog.com ふと思った。他にも色々な順序で取得出来たら、便利かもしれない。 そこで、考えてみた。 指定したプロパティ、例えば名前やファイルサイズをkeyに…

指定フォルダ内にある、一番最後に更新されたファイルを取得

必要に迫られて、指定フォルダ内にある「一番最後に更新されたファイル」を取得することになった。さて、どうしたものか。 我が家の環境で、とりあえず実験。まず最初に、試しに適当なフォルダを選んで、FileSystemObjectでファイルパス等を取得してみた。 S…

一旦、変数に入れるべきか否か。

最近迷うのが、↓ これ。 一度しか登場しない変数は、そもそも変数にすべきか? 例えば、テーブル書式を扱う場合で、こんな風に入力している時。 Sub test() Dim r As Range For Each r In Sheets(1).ListObjects(1).DataBodyRange VBEの入力支援機能は、一切…

Elbow Connector だけ選択

当ブログを訪れた方の検索キーワードに、以下が含まれていた。 Elbow Connector だけ選択 折角なので、挑戦してみる。 まず、コネクタのエルボを、どのように指定するか調べてみる。 取り敢えず、VBEのオブジェクトブラウザで検索する。 すると、1個だけヒ…

?をまとめて置換する

昨日は、当ブログを訪れた方の検索キーワード 「vba 正規表現 ?で区切られた文字列 抽出」 を少しだけ掘り下げて、実際に正規表現で抽出するマクロを考えてみた。 infoment.hatenablog.com そこで今回は、昨日の続きを少しだけ紹介する。 (↑ Canvaで「一度…

?で区切られた文字

ふと思い立って、どのような検索で当HPが閲覧されているのか、「オーガニック検索」の結果を見てみた。するとその中に、 「vba 正規表現 ?で区切られた文字列 抽出」 という検索があったので、少しだけ掘り下げてみる。 Split関数の場合 例えば、以下のよ…

辞書(連想配列)に複数のアイテムを登録できた感じにする

職場の勉強会で、こんな質問を受けた。 辞書(連想配列)って、(一つのキーにアイテムは)一個しか 登録できないんですか? 「そうだよ」と答えた後に、ふと思った。それで、試してみた。 Sub DictTest() Dim Dict As Dictionary Set Dict = New Dictionary…

進捗を確認する ③ 残り時間を推測するクラスモジュール

昨日は、何某かの処理について進捗を確認し、さらに残り時間を推測することに挑戦した。 infoment.hatenablog.com 折角作ったので、クラスモジュールにしてみた。 クラスモジュール(ProgressClass) Option Explicit ' 開始時刻 Dim StartTime As Single ' …