# Commuter Allowance VBA Project

Excel VBA 通勤手当計算ツール。

## Structure

```
vba/
├── 通勤手当テンプレート.xlsm           # Main workbook
├── data/                             # CSV data files
│   ├── 222交通機関名区分.csv          # Transport type (222)
│   ├── 223通勤_決定事項区分.csv      # Decision factors (223)
│   ├── 224通勤_手当月額の決定区分.csv  # Monthly amount (224)
│   ├── 507発信者.csv               # Sender (507)
│   ├── 区間.csv                    # Route (section)
│   └── 区間詳細.csv                 # Route details
└── src/sh/tuk/                      # 通勤 (Commuter) modules
    ├── init_module/
    │   ├── Import_modules.bas
    │   └── Test_Cache.bas
    ├── module/
    │   ├── Common_Button.bas     (306 lines)
    │   ├── Common_File_Utils.bas (347 lines)
    │   ├── Common_Functions.bas  (486 lines)
    │   ├── Common_Global_Cache.bas (586 lines)
    │   └── Common_Selector.bas  (161 lines)
    └── sheet/
        ├── C1.cls  (846 lines)    - Tukin_C1: 通勤手当編集
        ├── M1.cls (167 lines)    - Master_Kukan: 区間マスタ (import/export/validate)
        ├── M2.cls (400 lines)  - Master_Kukan_detail: 区間詳細マスタ
        ├── O1.cls (5 lines)    - Master_address: 住所マスタ
        ├── O2.cls (6 lines)    - Master_507: 発信者マスタ (507)
        ├── T1.cls (54 lines)   - Master_244
        ├── T2.cls (114 lines) - Master_245
        ├── T3.cls (74 lines)   - Master_246
        ├── Z1.cls (64 lines)   - Master_222: 交通機関マスタ
        ├── Z2.cls (54 lines)  - Master_223: 決定事項マスタ
        ├── Z3.cls (57 lines)  - Master_224: 手当月額決定区分マスタ
        └── O3.cls (61 lines)   - Master_225
```

## Sheet Class Prefix

| Prefix | Description |
|--------|-------------|
| C      | 通勤手当編集 (Commuter allowance editing) |
| M      | メニュー/区間マスタ (Menu / Route master) |
| O      | その他マスタ (Other masters) |
| T      | 通勤区間 (Route) |
| Z      | マスタデータ設定 (Master data configuration) |

## キャッシュ構造

| Cache | Sheet | Key → Value |
|-------|-------|-------------|
| m1Cache | M1 | 区間コード(C) → 交通機関区分(D)、交通機関名称(E)、利用区間発名(F)、利用区間着名(G)、券種(I)、運賃(L) |
| m1KukanDCache | M1 | { 交通機関区分(D): { 利用区間発名(F): [利用区間着名(G)] } } |
| m2Cache | M2 | { 区間コード(C): { 券種(I): { コード(J): 1箇月運賃(K) } } } |
| z1Cache | (222)交通機関マスタ | 区分(C) → 交通機関名称(D) |
| z2Cache | (223)通勤_決定事項区分一覧 | 区分(C) → 決定事項(D) |
| z3Cache | (224)通勤_手当月額の決定区分一覧 | 区分(C) → 手当月額の決定(D) |
| o1Cache | 住所情報 | { 職員番号(C): { 住所１(E): [住所２(F)] } } |
| o2Cache | (507)発信者一覧 | 区分(C) → 官職名称(D) |

## License

MIT