カテゴリー
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 なシートに設定される。
カテゴリー
Microsoft

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

ポイント

  • セルの先頭および末尾のスペース削除は、Trim 関数を使う。
  • クラスは、シートへの反映は行わない。トリム済みの 2 次元 Variant 配列を返すのみとした。
  • シートへの反映は、呼び出し元で行う。
カテゴリー
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 関数の引数が増えた。デメリットと感じる。
  • 結果、プロパティが減り、ロジックが単純になった。うれしい!
カテゴリー
コンピューター

【VBA】【Git】VBA とそのエクセルを Git でそれなりに管理する方法

管理するもの

  • Sample フォルダ配下で VBA コードとエクセルを管理
  • エクセル: Sample.xlsm、VBA: Sample クラス、Sample モジュール

管理方法ポイント

  • vbac を使用して VBA ファイルをエクスポートする。
  • bin フォルダにエクセルファイルを配置
  • src フォルダに VBA ソース配置 (自動生成)
  • Git で bin フォルダのエクセルファイル、src フォルダの VBA ソースを管理
  • VBA ソースは単体で使うよりも、エクセルのシートとも絡んだ使い方が多いため、エクセルファイルもバージョン管理に追加
  • .gitignore ファイルで、bin フォルダと src フォルダ以外をバージョン管理から除外