I did not look in great detail at your code, but it seems like you are always going to define your variables ahead of time because the number of input arguments will always be less than seven for how you have things set up. You will need to have th and Io put into the function inputs if you want them to be user input. (I am assuming you know that, but reminding you.)
There are a couple of different options of how you can handle an array input like that. Loops are always an option, either inside or outside the function.
th = [1 2 3];
Io = [1 2 3];
for i = 1:length(th)
for j = 1:length(Io)
[outputs] = KraKro_DVedit(Otherinputs,th(i),Io(j));
Inside looks pretty much the same, define th and Io outside, pass the entire set in, the inside have the same pair of loops, but inside the loops will be the calculations involving th and Io.
It seems like most of your calculations with th and Io are just addition, subtraction, multiplication, and division. It is possible to submit an array into this type of process, and have Matlab automatically evaluate the elements separately, but you will need to make sure the th and Io are the same size, and that all of your mathematical operators become element operators (* becomes .*, addition/subtraction are the same).
Keep in mind that the array math will only look at elements in the same location (th(1) to Io(1), not th(1) to Io(2)). If you want to compare all elements of th and all elements of Io, then I suggest trying the following outside of the function:
[TH,IO] = meshgrid(th,Io);
When you run the function with this, just pass d(:,1) as th input, and d(:,2) as Io input.