This seems to work, but I stay away from Static variables
Could you use a module level variable instead?
Option Explicit
Sub DemoVariantObjArrayBug()
Dim i As Integer
Dim NextWkSh As Worksheet
Static VariantObjArray() As Object ' <<<<
If UBound(VariantObjArray) = -1 Then ' <<<<
ReDim VariantObjArray(1 To ThisWorkbook.Worksheets.Count)
For Each NextWkSh In ThisWorkbook.Worksheets
i = i + 1
Set VariantObjArray(i) = ThisWorkbook.Worksheets(i)
Next NextWkSh
End If
Stop
For i = LBound(VariantObjArray) To UBound(VariantObjArray)
With VariantObjArray(i)
Debug.Print """" & .Name & """: CodeName = " & .CodeName & ", Index = " & .Index
End With
Next i
End Sub