Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


31182 / 76732 ←次へ | 前へ→

【50805】Re:シート自動挿入
発言  かみちゃん E-MAIL  - 07/8/16(木) 17:41 -

引用なし
パスワード
   こんにちは。かみちゃん です。

最近競馬ネタが多いような気もするのですが・・・

>と言う質問を投稿しましたが
>おかげ様でできるようになりました。

以下のご質問ですね。
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).〜
とする必要があると思います。
1 hits

【50803】シート自動挿入 おやじvba若葉マーク 07/8/16(木) 17:06 質問
【50805】Re:シート自動挿入 かみちゃん 07/8/16(木) 17:41 発言
【50806】Re:シート自動挿入 おやじvba若葉マーク 07/8/16(木) 18:03 お礼

31182 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free