カテゴリー
Microsoft

【Excel VBA】辞書オブジェクト、Scripting.Dictionary、ディクショナリ使用時の注意点!

Excel 2013 VBA でのディクショナリ注意点!!

  • ディクショナリのキー: 整数または文字列の使用が一般的だが、配列以外の任意の形式をとれる。
  • ディクショナリの値: クラスをはじめ、なんでも入る、はず。
  • イミディエイト ウィンドウにディクショナリオブジェクトをウォッチ表示したとき、確認できるのはキーのみ。
  • イミディエイト ウィンドウでディクショナリのアイテムを一覧表示したいときは、ウォッチ式として dictionary.items を追加すること。
  • ループでディクショナリのアイテムを取り出すには、dictionary.items を回す こと。dictionary を回そうとすると次のエラーとなった。
    [実行時エラー ‘424’: オブジェクトが必要です。]
  • 同様に、ループでディクショナリのキーを取り出すには dictionary.keys を回せばよい、はず(未確認)。
  • Add 関数の使い方。※1 の場合はキーが重複していてもエラーとならない。上書きする。
    • dictionary.Add "key", "item"
    • dictionary.Add key:="key, Item:="item"
    • Call dictionary.Add("key", "item")
    • Call dictionary.Add(key:="key", Item:="item")
    • dictionary("key") = "item" ※1
    • Set dictionary("key") = itemObject ※1
カテゴリー
Microsoft

【Excel VBA】CSV ファイルを 2 次元配列として得るクラスのコード♪

コードのポイント

  • CSV データは一時作業用のエクセルファイルを新規作成し、そこにインポートする。このエクセルは最後に保存しないで削除する。
  • QueryTables でインポートしたデータ範囲には、Name をあらかじめ指定できる。これを Range 関数で指定してデータを取得する。
カテゴリー
Microsoft

【Excel VBA】データの入ったことのある最大行数・最大列数を取得するコード

ポイント

  • Worksheet.UsedRange プロパティを利用して最大行数・最大限を取得する。
  • 書式やデータが入っていなくても過去に編集のあったセルも対象となる。
  • 過去に編集があったセルは [削除] すれば対象から外れる。
カテゴリー
Microsoft

【Excel VBA】【2】CSV ファイルを指定ブックのシートにテキスト形式でインポートするクラスのコード♪

ポイント

  • CSV 形式のファイル、つまりカンマで区切られたデータのファイルを読み込むことができる。ファイル拡張子が .csv でなくても読み込める。
  • 必ずテキスト形式でインポートされるように TextFileColumnDataTypes に指定する配列の作り方を工夫した。
  • コネクションは生成されたものだけ削除するように改善した。
  • Name オブジェクトの削除方法を改善し、シート名に影響を受けないようにした。
  • 他のエクセルなどからも呼び出せるようにブック名を指名するようにした。
カテゴリー
Microsoft

【Excel VBA】すべてのシートのウインドウ枠の固定を解除するコード

シートをすべて選択してウインドウ枠の固定を解除操作をしてみましたけれども、現在のシートのみしか解除されておりませんでした。。。

残りの何十何百のシート、ひとつひとつ丁寧に解除、、、辛いです><。。。

ポイント

  • Worksheets オブジェクトにすべてのシート情報が入っているので、これをループすれば各シートを取り出すことができる。
  • ウインドウ枠の固定は、ActiveWindow.FreezePanes で設定する。
  • ActiveWindow.FreezePanes は Active なシートに設定される。
カテゴリー
コンピューター

【Git】–no-ff オプションを付け忘れたマージをやり直す方法

git merge --no-ff <branchname> とするところを間違えて git merge <branchname> と –no-ff オプションをつけ忘れて実行してしまいました><。

今回は、git の過去を改変して –no-ff オプションをつけたマージをやりなおす方法をノートいたします。ローカル環境です。

解決のポイント

  • git reflog でマージ前に戻る。
  • git reset --hard HEADgit reset --hard ORIG_HEAD では解決できなかった。
  • git reset --hard MERGE_HEAD だったら上手く解決できたのかもしれない(未検証)。

補足

  • HEAD: 最新のコミットに対するハッシュ値の別名
  • ORIG_HEAD: 最新の一つ手前のコミットに対するハッシュ値の別名
  • MERGE_HEAD: マージされたブランチの最新のコミットに対するハッシュ値の別名
カテゴリー
Microsoft

【Excel VBA】指定したシートの範囲のセルの先頭および末尾のスペースを削除するクラスのコード♪

ポイント

  • セルの先頭および末尾のスペース削除は、Trim 関数を使う。
  • クラスは、シートへの反映は行わない。トリム済みの 2 次元 Variant 配列を返すのみとした。
  • シートへの反映は、呼び出し元で行う。
カテゴリー
Microsoft

【Windows】[Open with Atom] を使えるようにした試行錯誤

状況

Atom が自動アップデートされましたの。

すると、右クリックの [Open with Atom] を選択しても [アプリケーションが見つかりません] とエラーとなってしまいました><。

環境

  • Windows7 Professional 32bit
  • Atom 1.4.3

修正のポイント

  • レジストリエディタで HKEY_CLASSES_ROOT の 6 箇所のパスを修正する。
カテゴリー
コンピューター

【Git】stash などを使わなくてもマージやブランチ操作ができるケース

状況

  1. ブランチでコミット、作業完了
  2. master ブランチへマージし忘れた。
  3. 別の作業を開始して、編集途中。ファイルのへの変更などが既に保存されている。作業ディレクトリには変更があるがステージへは追加していない。

こんな時、ブランチで作業完了時点で master へマージして、新しいブランチを作って作業するべきだった><、とか、だから stash して辻褄を合わせなきゃ><、とか思っておりました。

しかし、特別な退避操作は必要ありませんでした。

作業ディレクトリは編集途中の状態のまま、マージやそのためのチェックアウトをすることができました。

カテゴリー
コンピューター

【Git】修正した一部分だけを直前のコミットに含める方法

やりたいこと

  1. コミット終了、次の作業へ Go!
  2. ファイル編集中に、前回コミットに含めるべき修正に気がついた><。

編集した一部分のみ直前のコミットへ含め、その後、残りの修正を普通にコミットしたい。

使用する Git コマンド

# 対話的にハンクをインデックスへ追加
git add --patch <pathspec>

# 直近のコミットを変更してコミット
git commit --amend
  • ハンク: 変更点の塊のこと