2016-03-30 110 views
0

我想知道這是否可能,以及我該如何做到這一點。 我有兩張工作簿。 Sheet2有多個列,有50個不同的記錄。 sheet1我想有一個播放按鈕或運行按鈕,當我點擊「播放/運行」它將有一列,並且一列將顯示sheet2中每列的記錄,直到沒有更多的列表sheet2。另外,在循環到下一列之前,顯示屏會有5秒的時間間隔。每次顯示一列

我發現瞭如何做的時間間隔而不是提前

+0

只需將Sheet1的列A設置爲Sheet2 Column 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模塊。然後添加一個按鈕或文本框/等。到Sheet1,然後右鍵單擊該形狀,然後選擇「分配宏」,然後選擇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

難題,歡呼! – BruceWayne

0

一個有點最小的,VBA方法:

都說Sheet2的樣子:

enter image description here

然後在Sheet1中創建一個名爲範圍的單元格record(在這種情況下的單元格A2):

enter image description here

在B列放式:

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

,並將其複製下來儘可能多的行作爲最長的記錄片材2

然後 - 所述VBA部可以只是有一個循環,它有聲明

Range("record").Value = i 

(與i週期通過列號包含記錄)。電子表格公式負責提取正確的值。