You can't declare a variable as public in a procedure -- your code doesn't compile. It needs to go at the top of the module:

Option Explicit

Public Pattern(1 To 12) As String

Sub Init()
  Pattern(1) = "-*"
  Pattern(2) = "whatever"
  ' ...
End Sub
Also, the default lower bound of an array is 0, not 1. You should declare bounds explicitly.