|
こんにちは。かみちゃん です。
最近競馬ネタが多いような気もするのですが・・・
>と言う質問を投稿しましたが
>おかげ様でできるようになりました。
以下のご質問ですね。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=49695;id=excel
(先頭4文字は、全角になっていますので、半角にしてください)
>自動作成の際に競馬の出走馬が18頭フルのときは
>For i = 1 To 18
>で18頭分シートが作成されます
出走馬ではなく、URLが馬指定になっていませんか?
特定のレースに出走する全ての競走馬(「競争馬」ではなく)について取得したい
というのならば、出走頭数を把握する必要があると思いますが・・・
> 出走馬が12頭のときに12頭分のシート作成後に処理を終了させる方法
「競争馬リスト」のA列B列に取得したい馬名とURLを羅列して、その値がなくな
れば処理終了という繰り返し処理にすればいいかと思います。
たとえば、
uma01 = Cells(I, 1).Value
の直後に
If uma01 = "" Then Exit For
とすればFor 〜 Nextの繰り返し処理は終了し(抜け)ます
> ひとつのシートの自動生成後に別の処理をしてその後に次のシートを作成する方法
Next
の直前に
Call Macro1
としておくと、
Macro1 というマクロを処理して、次のシート作成にいきます。
>上記でやってみましたら1頭分は出来ましたが次のシート作成の際
>
>.Refresh BackgroundQuery:=False
>
>のところで止まってしまいました。
エラーメッセージも書きましょうね。
追加したセルの I 行目の1列目に値がない場合に
「予期せぬエラーが発生しました」
というエラーになります。
これは、
ActiveWorkbook.Worksheets.Add.Name = st.Range("A" & I)
ctiveCell.FormulaR1C1 = "=競争馬リスト!R[0]C[1]"
ma01 = Cells(I, 1).Value
Dim strURL As String
Dim FR As Range
strURL = uma01
というコードになっていて、
シート追加した後のアクティブセルに、
=競争馬リスト!R[0]C[1]
という数式を設定して、I行目の1列目の値を取得していますが、
このI行目の1列目の値は、アクティブシートから取得しています。
アクティブシートがどこになっているかをよく確認してください。
シートを追加していますので、「競争馬リスト」シートではなく、追加したシート
がアクティブシートになっています。
そのため、
ma01 = Cells(I, 1).Value
を
ma01 = Sheets("競争馬リスト").Cells(I, 2).Value
とすれば、この問題は回避できると思います。
なお、馬ごとのURLは、A列ではなく、B列のようですので、
〜.Cells(I, 2).〜
とする必要があると思います。
|
|