1

私はループコマンドで立ち往生しています。私は。。をしようとしています:

1) 次のティッカー シンボルをリストから名前付きセルにコピーする
2) 名前付きセルで新しい値を使用するいくつかのマクロを実行する
3) ループしてリスト内の次のティッカー シンボルを選択し、ヒットするまで処理を繰り返すリストの最後の空白のセル。

以下は私のコードです。zippo を取得します。実行してもエラーメッセージは表示されません。

Sub Loop_data1()
Dim ws As Worksheet
 Set ws = Worksheets("Sheet1")   ' ws with list of tickers
Dim Rng As Range        
Set Rng = Range("a2")       ' 1st row with ticker value

Range("Stock_ticker") = Rng  '  copy value selected from ticker list to named cell stock_ticker

Do Until IsEmpty(ActiveCell)

Macro1
Macro2

ActiveCell.Offset(1, 0).Select     ' select next ticker by stepping down 1 row from present location

Loop

End Sub
4

1 に答える 1

0

あなたのコードはそれほど悪くはありませんが、いくつかの問題があります。

  • ws から rng を設定しません (Range("a2") を使用し、ActiveSheet を使用します)。
  • マクロ 1 またはマクロ 2 で選択したセルを変更でき、デバッグなしでは表示されないため、ActiveCell は安全ではありません。

次の変更を提案します

Dim ws As Worksheet, rng as range
Set ws = Worksheets("Sheet1")   ' ws with list of tickers
Set rng = ws.Range("a2")       ' 1st row with ticker value

Range("Stock_ticker") = rng

' here you use ActiveCell, but no activeCell was selected
' set a range you manage yourself is safer
' I set the cell with the value of rng, but if you don't want this one, change to the needed value
Do Until IsEmpty(rng)
    ' If you wanted to use ActiveCell in Macro1 or 2, it's safer to pass rng thru parameters
    call Macro1
    call Macro2

    set rng = rng.Offset(1, 0) ' select next ticker by stepping down 1 row
Loop
于 2015-07-30T20:25:07.907 に答える