2016-03-30 23 views
0

これが可能かどうか、どうすればいいか知りたいです。 私は2枚のブックを持っています。 Sheet2には50の異なるレコードを持つ複数の列があります。私は再生ボタンまたは実行ボタンをクリックして "再生/実行"すると1つの列を持ち、その列にはsheet2から列が1つもなくなるまでsheet2の各列のレコードが表示されます。さらに、ディスプレイは次の列にサイクリングする前に5秒の間隔を有する。一度に1列を表示する

iの時間間隔を行う方法を見つけたが、事前

+0

Sheet1の列AをSheet2列Aに設定し、次に待機し、Sheet1 Col A、列Bに等しく設定します。 – BruceWayne

答えて

1

でない表示

'time interval 
Application.Wait Now + TimeSerial(0, 0, 5) 

'displaying i have been using copy/paste but it does not work. 

おかげでVBAモジュールにこれらの手順を追加します。次に、ボタンやテキストボックス/ etcを追加します。シェイプを右クリックして[マクロの割り当て]を選択し、MyButtonClickプロシージャを選択します。これにより、マクロがボタンに関連付けられます。

次に、あなただけの列をループする必要があり、そのようにコピー/ペースト:

Sub MyButtonClick() 
Dim ws1 as Worksheet, ws2 as Worksheet 
Dim cols as Range, c as Range 

Set ws1 = ThisWorkbook.Sheets("Sheet1") 
Set ws2 = ThisWorkbook.Sheets("Sheet2") 

Set cols = ws2.Range("A1:G50") '## Modify as needed 

For Each c in cols.Columns 

    c.Copy Destination:=ws1.Range("A1") '## Puts the column in Sheet1, Column A 
    Call WaitForIt(5) 
Next 

End Sub 

Sub WaitForIt(seconds as Long) 

    Application.Wait Now + TimeSerial(0, 0, seconds) 

End Sub 
+0

ちょうど私が思っていたことです!ちょっと好奇心が強い、なぜあなたは待っている部分のための別のサブをしたのですか? – BruceWayne

+1

@BruceWayneこの非常にシンプルなケースでは、個人的な好みではありませんが、大きなアプリケーションで使用される場合には「Wait」はいつどこから呼び出されるかによってさまざまな待機時間を使用する可能性があります。したがって、IMOはサブルーチンパラメータを渡すだけです。さらに、OPにとってサブルーチンの使い方を学ぶための、とても簡単な例です:D –

+0

Gotcha、乾杯! – BruceWayne

0

やや最小限-VBAのアプローチ:

enter image description here

はSheet2のように見えることを言います

次に、シート1に、record(この場合はA2セル)という1セルを作成します。

列Bで

enter image description here

式を置く:

=IF(NOT(ISBLANK(INDIRECT("Sheet2!R"&ROW()&"C"&record,FALSE))),INDIRECT("Sheet2!R"&ROW()&"C"&record,FALSE),"") 

とその後シートで最長記録と同じくらい多くの行のために2

をそれを下にコピーする - VBAの一部だけで持つことができますステートメントを持つループ

Range("record").Value = i 

iレコードを含む列番号)。スプレッドシートの式は正しい値を引きます。

関連する問題