Just to place an Image to a Button. Some parts are created with Blend. Input: [Image] Events: [Clicked] 

Input: [MinimumValue] (can also be negative), [MaximumValue], [Value], [StepValue] (1, 0.5, 0.25, 4,..), [DecimalPlaces] (force value appearance, f.e.: 2 = "5.00")  
Sub Oops()
Application.Calculation = xlCalculationAutomatic
End Sub
_{Row}\^{Col}  A 
B 
C 
D 
E 
F 
G 
H 
I 

1 
ICR 
NotInH24 
1MTH 
3MTH 
6MTH 
1YR 
3YR 
5YR 

2 
0.61  1.52  7.14  0.92  2.88  3.47  4.03  21.11 

3 
0.73  0.01  5.02  2.43  0.48  2.97  5.36  15.27 

4 
0.8  0.99  7.63  8.76  11.18  6.56  5.95  43.24 

5 
0.22  0.38  0.67  3.41  3.93  5.42  4.63  26.52 
' https://www.vbforums.com/showthread.php?889021Error1004ApplicationdefinedorobjectdefinederrorVBAExcel
Sub OneD_TwoD_Arrays()
Rem 0 worksheets info, use arbritrary worksheet for demos..
Dim Ws As Worksheet: Set Ws = ActiveSheet ' You don't have to do this. You can forget it and miss out all the Ws. bits But that can catch you out sometimes, when you might end up referrencing a range in a different worksheet to that which you thought you were
Rem 1 make arbritrary 1 D array
'1_a) long way
Dim arr1D_a(0 To 4) As String
Let arr1D_a(0) = "BigJob": arr1D_a(1) = "Baveria": arr1D_a(2) = "Computer": arr1D_a(3) = "OldOne": arr1D_a(4) = "42"
'1_b) quick way using VBA Array function , https://docs.microsoft.com/enus/office/vba/language/reference/userinterfacehelp/arrayfunction
Dim arr1D_b() As Variant ' The array needs to be dynamic and needs to have Variant type, because....._ _.. the next code line function returns a field of elements which are housed in elements of Variant type , so the type must be Variant regardles of what types are withing the elements or we will get type mismatch errors , and _.. the working of the function is such that it sends infomation to size the thing taking it: If we have a fixed size array as in _b then Excel will error becuse Excel will insist on wanting to do this sizing of any recieving array, which it can't do if the array is fixed size.
Let arr1D_b() = Array("BigJob", "Baveria", "Computer", "OldOne", "42") ' This returns us a 5 element array starting at indicia 0 So we have now arr1D1_b(0) = "BigJob": arr1D_b(1) = "Baveria": arr1D_b(2) = "Computer": arr1D_b(3) = "OldOne": arr1D_b(4) = "42"
Rem 2 paste arrays into spreadsheet
Ws.Cells.ClearContents
Let Ws.Range("C1:G1").Value = arr1D_a() ' Top left of where the 5 column, single row is pasted is cell C1
Let Ws.Range("D2:H2").Value = arr1D_b() ' Top left of where the 5 column, single row is pasted is cell D2
Rem 3 Excel Spreadsheet array interaction:
'3a) usually Excel makes a 2D array from a range with indicia starting at (1, 1)
Dim arr2D1Row_a() As Variant ' In the next code line, I am uisng the .Value property applied to a multi cell rectangular single area range. When i do that, .Value is programmed to return me an array of values which as far as it knows might be number values or text values, or formulas or blanks or vb errors. To acccomadte the possibility of us distinguisching later what type we have, all elelments in the returned array are Variant because only Variant can "hold" all the different types in it. (a number can go in a number type variable, (Single Double Long Integer) or a Variant type variable; a text can go in a String type or a Variant type etc. etc). So, because Excel is programmed to return an array of Variant type Elements, I must decalre my array, arr2D1Row_a() , as variant types, or else i will get a type mismatch error at the next code line
Let arr2D1Row_a() = Ws.Range("D2:H2").Value ' Excel decides the array type in this situation. It will always be a 2D 1 "row" array {1 To 1, 1 To 5} Nothing you can do will influence this
'3b) When pasting out, top left is always top left of the range you specify, Excel doesn't care what indicia you've got in the array being pasted out
Let Ws.Range("E3:I3").Value = arr2D1Row_a() ' Top left of where the 5 column, single row is pasted is cell E3
Dim arr2D1Row_b(7 To 7, 42 To 47) As String ' A 2D 1 "row" array with arbritrary inidia: I can decide this but ...._ Excel doesn't care what indicia you have chosen when pasting out
Let arr2D1Row_b(7, 42) = "BigJob": arr2D1Row_b(7, 43) = "Baveria": arr2D1Row_b(7, 44) = "Computer": arr2D1Row_b(7, 45) = "OldOne": arr2D1Row_b(7, 46) = "42"
Let Ws.Range("F4:J4").Value = arr2D1Row_b() ' Top left is always top left, cell F4 in this case. ...._ Excel doesn't care what indicia you have chosen when pasting out
End Sub
Option Base 1