VBAでDictionaryにWorksheetオブジェクトを入れたら怒られた

他言語の dic[key] = value に相当する書き方をしたらエラーとなった。
.AddメソッドならOKだった。

Dim dic As Object
set dic = CreateObject("Scripting.Dictionary")
Dim ws As Worksheet
For Wach ws In ActiveWorkbook.Worksheets
    ' dic(ws.Name) = ws ' NG
    dic.Add ws.Name, ws ' OK
Next

複数のワークシートの存在を確認して,存在していたら処理するコードを書いていた。
次のシートを処理するたびにループでシートの有無を確認するのが無駄に思えた。
ならば,先に連想配列に入れてしまおう。
キーがシート名で,値がシートオブジェクトだ
何なら,キーだけでも処理は困らないのだが,VBAに集合(Set)はないので(ないよね?),Dictionaryを用いた。

で,他言語の dic[key] = value に相当する書き方だとエラーとなった。
もちろん,値がWorksheetオブジェクトではなく文字列とかならエラーにならない。
何でやねんと思いつつ,.Addを使うとエラーにはならなかった
この2つで動作が異なる(すでにキーが存在する場合の挙動)のだが,今回の処理ではそこは関係ないだろ,と思うのだが。