カテゴリー
Microsoft

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

ポイント

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

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

ポイント

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

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

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

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

ポイント

  • Worksheets オブジェクトにすべてのシート情報が入っているので、これをループすれば各シートを取り出すことができる。
  • ウインドウ枠の固定は、ActiveWindow.FreezePanes で設定する。
  • ActiveWindow.FreezePanes は Active なシートに設定される。
カテゴリー
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 箇所のパスを修正する。
カテゴリー
Microsoft

【Windows】右クリックコンテキストメニューの [Open with Code] などを削除する方法

経緯とやりたいこと

以前インストールした Visual Studio Code。

アンインストールしても右クリック時の [Open with Code] が消えておりませんでした><。

試しに実行してみると、[アプリケーションが見つかりません] とエラーとなりましたの。

久しぶりに使ってみようと思ったこともあり、再インストールすれば上書きされて有効になるかしらと思いました。ところが、[Open with Code] がもうひとつ増えただけでしたわ><。

不要な [Open with Code] を削除したいですの!

環境

  • Windows 7 Professional 32 bit
カテゴリー
Microsoft

【Excel VBA】西暦数字から和暦数字へと変換するコード

ポイント

  • Format 関数を使用する。
  • Format(y & "/1/1", "e")y & "/1/1": y に 4 桁の西暦年が入って年月日となる。"e": 和暦の年を指定するフォーマット
  • 日付けを # で囲いたかったが、エラーとなるため ” で囲った。
  • 月日は元号の境目を意識しないで済むように 1 月 1 日とした。

VBA コード

Public Sub Test()
    Dim y As String: y = "2016"
    Debug.Print "和暦年数字: " & Format(y & "/1/1", "e")
End Sub

結果

和暦年数字: 28
カテゴリー
Microsoft

【Excel VBA】満年齢を算出する関数コード

学年を求めるためには、4月1日時点で何歳か?、を算出する必要がごさいます。

例えば、次のようになります。

  • 2015/4/1 に 0 歳とカウントされる生まれ: 2014/4/2-
  • 2015/4/1 に 1 歳とカウントされる生まれ: 2013/4/2-2014/4/1
  • 2015/4/1 に 2 歳とカウントされる生まれ: 2012/4/2-2013/4/1
  • 2015/4/1 に 3 歳とカウントされる生まれ: 2011/4/2-2012/4/1
  • 2015/4/1 に 4 歳とカウントされる生まれ: 2010/4/2-2011/4/1
  • 2015/4/1 に 5 歳とカウントされる生まれ: 2009/4/2-2010/4/1

これを、基準日と誕生日を渡してやれば算出してくれる VBA を書きました♪

カテゴリー
Microsoft

【改善版】【Excel VBA】配列やコレクションの定数クラスを用意するコード2♪

の改善版ですわ♪

変更ポイント

  • プロパティのコメントから を削除した。
  • ディクショナリを生成するのは 1 つの関数にまとめ、抽象度を上げた。
  • 以前は定数ディクショナリの種類ごとに生成関数を定義していたのが、修正後は定義ディクショナリがいくつあっても 1 つのディクショナリ生成関数を使用するだけでよくなった。
  • 修正前のディクショナリ生成関数の流れ
    1. コンストラクタからディクショナリ生成関数を呼ぶ。
    2. ディクショナリ生成関数内で定数要素をディクショナリに追加していく。
    3. ディクショナリ生成関数内でディクショナリをプロパティに代入する。
  • 修正後のディクショナリ生成関数の流れ
    1. コンストラクタで定数を配列で定義する。
    2. それをディクショナリ生成関数に渡す。
    3. 返り値をプロパティに代入する。
カテゴリー
Microsoft

【改善版】【Excel VBA】ワークシートに入力したマスタデータを VBA から簡単に利用できるようにしたクラスのコード!2

の改善版!

ポイント

  • プロパティ (クラス変数) は Public メソッド以外から呼ばないようにした。
  • 関数型プログラミング入門 | プログラミング | POSTD の「副作用がない」コードという考え方を参考にした。
  • 結果、Private 関数の引数が増えた。デメリットと感じる。
  • 結果、プロパティが減り、ロジックが単純になった。うれしい!