|
下記のスクリプトで試しているのですが、ここからどう組み立てたらいいのが分かりません。forのstep+2をうまく組み合わしたらできそうな気もするのですがいまいち分かりません。聞いてばかりで申し訳ないですが、何か良い方法ないでしょうか?
file="C:\Users\aruke\Desktop\URL.txt"
//配列にfileを挿入 Dim res1 = COMMON.test_hairetu(file)
o_XL=xlopen(0)
row=2
for i = 0 to length(res1)-1 xlsetdata(o_XL, res1[i], "a" + row) xlsetdata(o_XL, res1[i+1], "b" + row)
row = row + 1 next
XLCLOSE(o_XL)
// 0,2,4 タイトル // 1,3,5 リンク
|
No.3562 2017/02/25(Sat) 16:09:52
|
☆ Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン |
|
|
配列をエクセルにA列、B列に入力する方法はできたのですが、エラーが出てしまいます。 breakでfor文をぬけようとしてもエラーになります。どこが間違っているのでしょうか?
[エラーコード] getvalue:variant or safe array index out of bounds
17行目 xlsetdata(o_XL, res1[i+1], "b" + row)
[試しているスクリプト]
call C:\Users\aruke\Desktop.uws
file="C:\Users\aruke\Desktop\URL.txt"
//fileを配列に入れる Dim res1 = COMMON.test_hairetu(file)
o_XL=xlopen(0)
row = 2
for i = 0 to length(res1) step+2 xlsetdata(o_XL, res1[i], "a" + row) xlsetdata(o_XL, res1[i+1], "b" + row) row = row + 1
if i=length(res1) then break next
o_XL.ActiveWorkBook.SaveAs(file1) XLCLOSE(o_XL)
// 0,2,4 タイトル // 1,3,5 リンク
|
No.3567 2017/02/26(Sun) 19:56:53
|
|
☆ Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / しろまさ |
|
|
エラーはsafearrayの範囲外という内容。 length(res1)に配列要素はない。
さあ問題です。どこを修正すればよいでしょうか?
|
No.3568 2017/02/26(Sun) 20:47:21
|
|
☆ Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン |
|
|
しろまさ様、回答ありがとうございます、しろまさ様のサイトのページ紙で印刷で見させて頂いています。
iがlength(res1)の13になるとbreakしてfor文を抜けれると思ったのですが、この考え方は間違っているのでしょうか?
>エラーはsafearrayの範囲外という内容。length(res1)に配列要素はない。 length(res1)が13ですので、0から進んでいくと12までいって13だけが残されるからエラーという考え方で良いのでしょうか?
if i=length(res1) then
//13 print "length(res1)="+length(res1)
break
|
No.3570 2017/02/26(Sun) 21:38:40
|
|
☆ Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン |
|
|
>length(res1)に配列要素はない。 length(res1)-1で条件式を組み立てるという事ですよね。
下記のスクリプトでうまくいきました。 for i = 0 to length(res1) step+2 xlsetdata(o_XL, res1[i], "a" + row) if length(res1)-1= i then break endif
xlsetdata(o_XL, res1[i+1], "b" + row) row = row + 1
next
|
No.3571 2017/02/26(Sun) 22:31:07
|
|
☆ Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / しろまさ |
|
|
> length(res1)-1で条件式を組み立てるという事ですよね。 正解です。ただ、 for i = 0 to length(res1)-1 step+2 とすればIf文は不要となります。
[i+1]を使う今回の条件では for i = 0 to length(res1)-2 step+2 で良さそうですね。
|
No.3574 2017/02/27(Mon) 08:51:21
|
|
☆ Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン |
|
|
>for i = 0 to length(res1)-1 step+2 とすればIf文は不要 これは、どういう風にすればIF文不要でできるのでしょうか?
>for i = 0 to length(res1)-2 step+2 こちらはbreak文無しでうまくできました。
|
No.3579 2017/02/27(Mon) 23:16:29
|
|
☆ Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン |
|
|
length(res1)、 lengthは1から数える
配列、res1[i]は0から数える
よって、配列に合わせる為にlength(res1)−1にする
length(res1)は13の場合、length(res1)−1は12になる。
配列には12のデータが入っていると判断できる。
12個のデータという事は、配列[11]と表示とイコール
12個のデータをエクセルにA列、B列に2列×6行で入れたいとする。
よって、iが12になった場合のxlsetdata(o_XL, res1[i], "a" + row)の前にif文のbreakを入れる。
call C:\Users\Desktop
file="C:\Users\aruke\Desktop\URL.txt"
Dim res1 = COMMON.test_hairetu(file)
file1="C:\Users\aruke\Deskt"
o_XL=xlopen(0)
row = 2
for i = 0 to length(res1)-1 step+2
if i=12 then break endif xlsetdata(o_XL, res1[i], "a" + row)
xlsetdata(o_XL, res1[i+1], "b" + row) row = row + 1
next
o_XL.ActiveWorkBook.SaveAs(file1) XLCLOSE(o_XL)
// 0,2,4 タイトル // 1,3,5 リンク
|
No.3580 2017/02/27(Mon) 23:44:56
|
|
☆ Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / stuncloud |
|
|
> length(res1)は13の場合、length(res1)−1は12になる。 はいいんだけど > 配列には12のデータが入っていると判断できる。 って判断しちゃだめです length(res1) が個数です res1[0] から res1[12] までの13個の要素がある配列です このへんの認識違いはバグの元になるので気をつけましょう
|
No.3584 2017/02/28(Tue) 09:56:09
|
|