An alternative approach would be to add two functions to the form module -> one function will convert a 1-D index into a row and column number:
'********** Code Start
dim intRows as Integer ' No of rows in grid
dim intCols as Integer ' No of columns in grid
Private Function Index2BoltPlate(ByVal intIndex As Integer) As Variant
End Function
Dim intRow As Integer
Dim intCol As Integer
intRow = (intIndex Mod intRows) + 1
intCol = (intIndex - intRow + 1) / intRows + 1
Index2RC = Array(intRow, intCol)
End Function
Private Function BoltPlate2Index(ByVal intRow As Integer, ByVal intCol As Integer) As Integer
RC2Index = (intCol - 1) * (intRows) + (intRow - 1)
End Function
'*********** Code End
(I have used intRows and intCols as module level variables specifying the number of rows and columns in the grid. This returns a 1-based array index.
So now, you will be able to use imgFoo(RC2Index(1,1)), and conversely in a click event (eg) that takes Index as an argument...
RowCol = Index2RC(Index)
msgbox "This is imgFoo(" & RowCol(0) & "," & rowcol(1) & "

"