Thanks for the help SamT. But it didn't quite work for me. Instead, nothing was processed and the procedure just exits.
Here is the whole code for reference, credit to brettdj:
Sub MultiGoalSeek()
Dim TargetVal As Range, DesiredVal As Range, ChangeVal As Range, CVcheck As Range
Dim CheckLen As Long, i As Long
restart:
With Application
.Iteration = True
.MaxIterations = 500
.MaxChange = 0.0000000000001
On Error GoTo CancelMethod
Set TargetVal = .InputBox(Title:="Select a column range", _
prompt:="Select Resulting ROI Column Range", Type:=8)
Set DesiredVal = .InputBox(Title:="Select a column range", _
prompt:="Select the Column Range of the ROI or Net Profit GOAL", Type:=8)
Set ChangeVal = .InputBox(Title:="Select a column range", _
prompt:="Select Sale Price or Cost Price Column Range That You Wish To Calculate", Type:=8)
End With
'Ensure that the amount of cells is consistent
If TargetVal.Cells.Count <> DesiredVal.Cells.Count Or TargetVal.Cells.Count <> ChangeVal.Cells.Count Then
CheckLen = MsgBox("Ranges were different lengths, please press yes to re-enter", vbYesNo + vbCritical)
If CheckLen = vbYes Then
'If ranges are different sizes and user wants to redo then restart code
GoTo restart
Else
Exit Sub
End If
End If
CancelMethod:
Exit Sub
' Loop through the goalseek method
On Error GoTo InputCost
For i = 1 To TargetVal.Rows.Count
TargetVal.Cells(i).GoalSeek Goal:=DesiredVal.Cells(i).value, ChangingCell:=ChangeVal.Cells(i)
Next i
InputCost:
ChangeVal.Cells(i) = "Input Cost"
If i = TargetVal.Cells.Count Then Exit Sub
Resume Next
Exit Sub
End Sub