Hi robertoguillen and welcome,
Are you sure you typed in the code exactly as given?
I found two major problems.
The Variable Sheet2 will override the builtin use of the reference to Sheet2. Having done that it will cause a probelm as you have not made a reference to any worksheet.
The other problem was that the OnAction name did not match the name of the macro it was suppose to run.
Sub AddDropDown(Target As Range)
Dim ddBox As DropDown
Dim vaProducts As Variant
' Dim Sheet2 As Worksheet ' Commented out
Dim i As Integer
vaProducts = Array("Water", "Oil", "Chemicals", "Gas")
Set ddBox = Sheet2.DropDowns.Add(Target.Left, Target.Top, Target.Width, Target.Height)
.OnAction = "EnterProductInfo" ' name corrected
For i = LBound(vaProducts) To UBound(vaProducts)
Private Sub EnterProductInfo()
Dim vaPrices As Variant
vaPrices = Array(15, 12.5, 20, 18)
.TopLeftCell.Value = .List(.ListIndex)
.TopLeftCell.Offset(0, 2).Value = vaPrices(.ListIndex - Array(0, 1)(1))