私は見当もつかない。
各 If then ブロックの後に End If を入れてみましたが、明らかにうまくいきませんでした。何か案は??
Private Sub putCollectionInWorksheet(ByRef ws As Excel.Worksheet, ByRef cData As Collection)
Dim i As Long, j As Long
Dim emp As Employee
i = 36 ' current row
For Each emp In cData
If emp.City = "Dallas" And emp.Title = "Associate" Then
ws.Cells(i, 3).Value = emp.Name
ws.Cells(i, 3).Interior.ColorIndex = 31
ws.Cells(i, 3).Font.Color = vbWhite
i = i - 1
Next emp
Else
If emp.City = "Denver" And emp.Title = "Associate" Then
ws.Cells(i, 4).Value = emp.Name
ws.Cells(i, 4).Interior.ColorIndex = 53
ws.Cells(i, 4).Font.Color = vbWhite
i = i - 1
Next emp
Else
If emp.City = "Houston" And emp.Title = "Associate" Then
ws.Cells(i, 5).Value = emp.Name
ws.Cells(i, 5).Interior.ColorIndex = 52
ws.Cells(i, 5).Font.Color = vbWhite
i = i - 1
Next emp
Else
If emp.City = "Kansas City (Missouri)" And emp.Title = "Associate" Then
ws.Cells(i, 6).Value = emp.Name
ws.Cells(i, 6).Interior.ColorIndex = 56
ws.Cells(i, 6).Font.Color = vbWhite
i = i - 1
Next emp
Else
If emp.City = "Oklahoma City" And emp.Title = "Associate" Then
ws.Cells(i, 7).Value = emp.Name
ws.Cells(i, 7).Interior.ColorIndex = 47
ws.Cells(i, 7).Font.Color = vbWhite
i = i - 1
Next emp
Else
If emp.City = "Tulsa" And emp.Title = "Associate" Then
ws.Cells(i, 8).Value = emp.Name
ws.Cells(i, 8).Interior.ColorIndex = 48
ws.Cells(i, 8).Font.Color = vbWhite
i = i - 1
Next emp
End If
End Sub
編集
現在、行は次のようになっています
ボブ | スー | エレン | エレン | ジョージ
コレクションがダラスの同僚であるヘンリーに出くわした場合、それは上書きされます.
ヘンリー | ヘンリー | スー | エレン | エレン | ジョージ
次のようにする必要があります。
ヘンリー | ヘンリー |
ボブ | スー | エレン | エレン | ジョージ
申し訳ありませんが、ファイアウォールのためにスクリーンショットを表示できません。