VBAでDictionaryを簡易的な配列代わりに使う(任意の値を.Addしていき、それらの値の配列を.Itemsとして取り出す)手法がありますが、.Addするときにキーを被らないようにするためにはひと工夫必要です。
キーとしては.Countを使うのが簡単ですが、それだと.Remove後に追加するときにはキー被りが発生してしまいます。
その辺りを少し工夫して、.Remove後でも追加もできるような実装を考えてみました。
表の最後は斜線で全て潰せと言われたとき(言われたとしたら)、あなたはどうしますか?
のようなお題をだされていたので、ネタでやってみました。
サンプルファイル(空欄に斜め罫線.xlsx)はこちらからダウンロードできます。
1.mp4
はやりにのっかって(?)[^1]エクセルVBAで迷路を作って解くというのをやってみました。
……といっても、としじ@toshi81350036 さんが作成された迷路を作る方と、りゅうりゅう@blacklist_ryu さんが作成された迷路を解く方 をくっつけてちょっといじっただけで、オリジナリティとかはありません……(をい)。
[^1] なお、はやりは再帰だという説もありますが、本項では再帰は使用しておりません💦
ダウンロード
Text.ToList()は文字列を文字のListに変換するPower Query M関数ですが、サロゲートペアや異体字セレクタには対応していないようです。
これらに簡易的に対応した関数(TextToListEx)を試作してみました(関連ツイート)。
(え、結合文字? 知らない子ですね……)
VBEThemeColorTool: VBEThemeColorEditor用のテーマファイルを適用するためのコマンドラインツールの設定例
自分が使用しているVisual Basic Editorのコードの表示色設定方法
※サンプル表示例はこちらの Kou@@LoverExcel さんのツイートを参照
エクセルの入力規則(リスト)をVBA(Range.Validation.Add())で設定したときに、場合によってはブックが壊れてしまう、という話。
特にリストをカンマ区切りの文字列で直接指定するような場合は、255文字を超えないように要注意(リスト(候補)が動的に変わるような場合、カンマ区切りで直接指定するよりも、ワークシートの範囲参照で指定するのがベター)。
下記のような不具合が発生しないように、リスト(候補)はワークシートへの参照の形で指定するのがよいと考えられる。
参照範囲は固定範囲(予め想定される最大の範囲)でもよいが、ここでは参照元の候補数が更新された場合に、Worksheet_Changeイベントによって参照範囲を動的に変更するようにしている。
ExcelでCSVファイルをパースする(読み込んで行列データにする)場合には、PowerQueryやADODB.RecordSetを使う(自分も先日やってました)のが定番ですが(その他の方法もあり・詳細はこちらの記事がわかりやすいかと)、
ということで、用途によっては使いにくいケースもあります。
そこで、CSVを読み込むためのクラスモジュールを作成してみました(正規表現を使って地道にパースしています)。
フォローしている方々の間でCSVの取り扱いについて盛り上がっているみたいだったので(発端は吉田 拳さんのツイート?)、以前目にしたもののスルーしていたSchema.iniを用いる方法を試してみました。
※その後、独自のCsvParserクラスモジュールを試作してみました
ただし、そちらはパフォーマンスが低下してしまうため、
- 文字数制限(1セル255文字まで)
- 列数制限(最大255列まで)
GoogleアナリティクスのカスタムURLパラメータ(utm_*)がついたりつかなかったりするとブックマークが分散してしまって私的に嫌なので、これを除去したURLにリダイレクトするユーザースクリプトを作ってみました。
まぁスマホやタブレットでブックマークした場合は除去できないのであれですけどね……。