[[20190619002006]] 『複数のプロシージャをまたぐループ』(MC) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数のプロシージャをまたぐループ』(MC)

掲示板の皆さま

VBA初心者のMCと申します。
セルB3に7203など株式コードを入力し、Excel組み込みのBloombergからデータを取得してチャートを更新し、Axes_Printで軸の調整を行ってPDF出力するマクロです。

ここで7203の後順次リストのコードを入力し、チャートをPDF出力していきたいと考えています。
よってRange("B3").Value = Range("AD" & i).Valueといった形でiをDo〜Loop Whileしたいのですが、このループはAxes_Printが終わってから行いたいため、複数のSubをまたぐループが作れずに困っています。

Bloombergのデータ取得に時間がかかるため、Subで分けて順序を作る必要があると考えていますが、もし別の方法で回避できるのであれば柔軟に設計を変更したいと思います。
https://codeday.me/jp/qa/20190311/363169.html

ご教示いただければ幸いです。
どうぞよろしくお願いいたします。


Sub PDF()

    Range("B3").Value = 7203 ' ここにTickerを入れると任意の企業のシートを出力できます

    Application.Run "RefreshAllStaticData"
    Application.OnTime Now + TimeValue("00:00:30"), "Axes"

End Sub

Sub Axes_Print()

    Worksheets("stock.c").Activate
    Range("O6").Value = Round(Worksheets("stock.d").Range("D33").Value * 1.1 + 0.5, 0)
    Range("O7").Value = Round(Range("O6").Value / Range("E55").Value, 1)

    Worksheets("stock.d").Range("J24:K24").Copy Destination:=Worksheets("stock.d").Range("J19:K23")
    Worksheets("stock.c").Activate
    ActiveSheet.ChartObjects("priceChart").Activate
    ActiveChart.Axes(xlValue).Select
    ActiveChart.Axes(xlValue).MaximumScale = Range("O6")
    ActiveChart.Axes(xlValue).MajorUnit = Range("O6") / 5
    ActiveChart.Axes(xlValue, xlSecondary).Select
    ActiveChart.Axes(xlValue, xlSecondary).MaximumScale = Range("O7")
    ActiveChart.Axes(xlValue, xlSecondary).MajorUnit = Range("O7") / 5
    Range("B3").Select

    Application.Wait Now() + TimeValue("00:00:5")

    Dim fileName As String
    fileName = ThisWorkbook.Path & "\" & Format(Range("J1").Value, "yyyymmdd") & "_" & Range("A1").Value
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName

End Sub

< 使用 Excel:Office365、使用 OS:Windows10 >


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.