2016-03-30 6 views
0

Ich würde gerne wissen, ob dies möglich ist und wie ich das tun könnte. Ich habe eine Arbeitsmappe mit 2 Blättern. Sheet2 verfügt über mehrere Spalten mit 50 verschiedenen Datensätzen. sheet1 ich hätte gerne eine play button oder run button, wenn ich auf "play/run" klicke es wird eine spalte haben und diese eine spalte zeigt die sätze jeder spalte von sheet2 bis es keine spalten mehr von sheet2 gibt. Außerdem wird die Anzeige 5 Sekunden dauern, bevor zur nächsten Spalte gewechselt wird.Anzeige einer Spalte auf einmal

fand ich heraus, wie das Zeitintervall zu tun, aber vorher die Anzeige

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

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

Dank nicht

+0

Einfach die Spalte A von Sheet1 auf Sheet2 setzen Spalte A, dann warte, dann Sheet1 Col A, entspricht Spalte B usw. – BruceWayne

Antwort

1

diese Verfahren an das Modul VBA hinzufügen. Fügen Sie dann eine Schaltfläche oder ein Textfeld/etc. Klicken Sie mit der rechten Maustaste auf die Form und wählen Sie "Makro zuweisen". Wählen Sie dann die Prozedur MyButtonClick. Dadurch wird das Makro mit der Schaltfläche verknüpft.

Dann müssen Sie nur eine Schleife über die Spalten und Kopieren/Einfügen in etwa so:

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

Genau das, was ich dachte! Nur neugierig, warum hast du ein separates Sub für den Warteteil gemacht? – BruceWayne

+1

@BruceWayne nur persönliche Vorliebe, sicherlich nicht notwendig in diesem sehr einfachen Fall, aber 'Wait', wenn in einer größeren Anwendung verwendet möglicherweise verschiedene Wartezeiten je nachdem, wann/wo es heißt, etc., so IMO ist es am besten zu Unterprogramm es und übergeben Sie einfach den Parameter. Außerdem ist es ein gutes und sehr einfaches Beispiel für OP, etwas über die Verwendung von Subroutinen zu lernen: D –

+0

Gotcha, Prost! – BruceWayne

0

Ein etwas minimal-VBA-Ansatz:

Sagen Sie, dass sheet2 wie folgt aussieht:

enter image description here

dann in Blatt1, erstellen Sie eine 1-Zelle namens Bereich record (Zelle A2 in diesem Fall):

enter image description here

In Spalte B setzen die Formel:

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

und kopieren Sie in Blatt für so viele Zeilen, wie der längste Datensatz nach unten 2

Dann - der Teil VBA haben nur eine Schleife, wo es die Anweisung hat

Range("record").Value = i 

(mit einem i die Zyklus durch die Spaltennummern, die Datensätze enthalten). Die Tabellenkalkulationsformel sorgt dafür, dass die richtigen Werte gezogen werden.

Verwandte Themen