###前提・実現したいこと
VBAにて工数管理を作成しています。
一枚目にある画像で記入した項目を登録ボタン押下することで該当する大分類のシート(2枚目画像)に移動して1枚目の画像に表示してある日付(D3)、中項目、領域全てが一致した場所に、掛かった工数を入力されるようにしたいと思っています。
連想配列を使用して日付以外の項目は配列への読み出し、書き出しがうまくいっている(はず)ですが、2枚目の画像の日付がある列を指定してあげる良い方法が思いつきません。
大分類は4種類あり、2枚目画像のA4部分(青く塗りつぶされ部分)が大分類になり、中分類はA7〜A24(大分類によって項目数は異なる)、領域はG7〜G24(3項目固定)になります。
ところどころ変なコメントがありますがスルーしてもらうと助かります・・・
###該当のソースコード
VBA
1Sub record() 2 3 Dim Sheet1, Sheet2 As Worksheet 4 Const COL大分類 = 4 '大分類の列 5 Const COL中分類 = 6 '中分類の列 6 Const COL領域 = 9 '領域の列 7 Dim MAXRow As Long '最終行 8 Dim Key As String '検索キー 9 Dim c, r, i As Long 10 Dim Today As Date '日付 11 Dim dic As Class1 'Dictionaryオブジェクト呼び出し 12 13 14 Set dic = New Class1 '連想配列の定義 15 16 Set Sheet1 = Worksheets("工数入力") 17 Set Sheet2 = Worksheets("月次表(その他)") 18 19 Today = Worksheets("工数入力").Range("D3").Value '登録する日を格納 20 21 MAXRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row '最終行を求める 22 23 24 '各工数の時間を連想配列へ読み込む 25 With Sheet1 26 For r = 9 To MAXRow '最終時間まで 27 Key = .Cells(r, COL大分類).Value & .Cells(r, COL中分類).Value & .Cells(r, COL領域).Value & .Cells(3, 4).Value '大分類&中分類&領域&日付 28 dic(Key) = dic(Key) + 0.5 '工数計算 29 Next 30 End With 31 32'-----------------各月次表への書き出し----------------- 33 c = Today 'ここが違うと思う 34 35 With Sheet2 'とりあえずその他シートで実験 36 For i = 4 To 19 + 3 '中項目(項目追加されたら編集) 37 For r = 7 To 36 '領域 38 Key = .Cells(4, 1).Value & .Cells(i, 1).Value & .Cells(r, 7).Value & .Cells(2, c).Value '大分類&中分類&領域&日付(日付が違うはず・・・) 39 .Cells(r, c) = dic(Key) '↑同様列の指定がNG 40 Next 41 Next 42 End With 43 44 MsgBox "登録完了しました。" 45 46End Sub 47
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
Macを使用しているので連想配列の定義は下記のURLを参考にしました。
http://fccreator.blogspot.jp/2014/03/macmacexcelvbadictionary.html
OfficeはOffice 365 Soloを使用しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/31 09:26
2016/05/31 09:30
2016/06/01 00:48
2016/06/01 01:34 編集
2016/06/01 02:35
2016/06/01 04:23
2016/06/01 08:10