Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1432to1436
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array zeilenweise iterativ kopieren

Array zeilenweise iterativ kopieren
24.06.2015 11:32:29
Bernhard
Hallo,
Excel soll eine Kurve langsam aufbauen. Pro 0.5 Sekunden einen neuen Wert einzeichnen.
Ich habe in den Spalten B bis E Zahlen, Zeile 3 ist die Kopfzeile.
Die Spaltenlänge ist variabel, je nach Input.
Ein vba soll nun Zeile für Zeile nacheinander in die Zielspalten G bis J rein kopieren inkl. Kopfzeile, also nicht alles auf einen Schlag. Mit einer for next Schleife oder so.... also alle 0.5 Sekunden Ausgangszeile auf leer prüfen, falls nein, kopieren und in den Zielbereich rein kopieren. Dann weiter mit der nächsten Zeile. Bei der ersten Leerzeile soll er aufhören.
Mit diesen Zielspalten ist eine Datenreihe in der x,y Grafik verknüpft.
Ich möchte sehen, wie sich die Kurve langsam aufbaut durch alle 0.5 Sekunden Hinzufügen von Datenpunkten via vba.
Weiss jemand einen Code hierzu?
Besten Dank und Gruss,
Bernhard

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array zeilenweise iterativ kopieren
24.06.2015 12:29:27
Jack_d
Hallo Bernhard.
1. Eine Mustermappe ist immer von Vorteil
2. ist der Befehl den du suchst Application.Wait
3. der Rest sollte die Als Excel Profi ja eigentlich leicht fallen
Grüße Jack

AW: Array zeilenweise iterativ kopieren
24.06.2015 13:28:49
Bernhard
https://www.herber.de/bbs/user/98432.xlsx
Hier eine Beispieldatei.
Es geht mir nur um das vba, die Grafik wird er automatisch updaten, wenn neue Zeilen eingefügt sind.
Das müsste doch irgendwie mit for next i und applicationwait (0,0,0.5) gehen, dann stoppt er zwischen jedem einzelnen Kopiervorgang eine halbe Sekunde... oder nicht?
Danke und Grüsse,
Bernhard

Anzeige
AW: Array zeilenweise iterativ kopieren
24.06.2015 13:44:41
Jack_d
Hallo Bernhard,
ich weiss ehrlich gesagt nicht, was wo reinzukopieren ist.
Hast du schon einen Makroansatz angefangen?
Grüße

Hier aber erstmal eine Lösung zum Warten
24.06.2015 14:06:18
Jack_d
Hab gelesen, das es wohl so günstiger ist.
Grüße
Private Declare Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click()
For i = 1 To 10
'Copy and Paste Makro
'xxxxxxxxx
'xxxxxxxxx
'Warten
Call Sleep(500) '0,5 Sekunden
Next i
End Sub

AW: Hier aber erstmal eine Lösung zum Warten
24.06.2015 17:59:38
Bernhard
Danke für die Wartelösung!
Ich hänge nochmal ein Beispiel dran, vielleicht wirds dann klarer. Das copy paste vba fehlt mir noch.
https://www.herber.de/bbs/user/98445.xls
Grüsse,
Bernhard

Anzeige
AW: Hier aber erstmal eine Lösung zum Warten
24.06.2015 20:34:44
Werner
Hallo Bernhard,
so vielleicht? Ungetestet.
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click()
Dim loletzte AS Long
loLetzte = ActiveSheet.Cells(RowsCount, 2).End (xlUp).Row 'letzt Zeile in Spalte B
For i = 4 To loLetzte 'von Zeile 4 bis letzt Zeile
'Copy and Paste Makro
With ActiveSheet
.Range(.Cells(i, 2), .Cells(i, 5)).Copy .Cells(i, 7)
End With
'Warten
Call Sleep(500) '0,5 Sekunden
Next i
End Sub
Gruß Werner

AW: Array zeilenweise iterativ kopieren
27.06.2015 12:37:39
Bernhard
Hallo Werner,
vielen Dank für deinen Code.
Nur meldet er mir jetzt in Zeile:
loletzte = ActiveSheet.Cells(RowsCount, 2).End(xlUp).Row 'letzt Zeile in Spalte B
Laufzeitfeler 1004: Anwendungs- oder Objektdefinierter Fehler.
Was habe ich falsch gemacht?
Viele Grüße,
Bernhard

Anzeige
AW: Array zeilenweise iterativ kopieren
27.06.2015 12:56:20
Daniel
Hi
es muss heißen:
Rows.Count
und steht für : Zeilen.Zählen
ohne den Punkt dazwischen interpretiert dein VBA-Editor das RowsCount als neue Variable und die hat dann den Wert 0, was dann zu dem Fehler führt, weil es eine Zelle mit der zeilennummer 0 nicht gibt.
kleiner Tip: verwende Option Explicit und deklariere deine Variablen immer, dann fallen solche Fehler schneller auf.
Gruß Daniel

AW: Array zeilenweise iterativ kopieren
27.06.2015 13:47:02
Werner
Hallo Bernhard,
sorry, ich habe das auf die Schnelle mit dem Handy runter geklimpert, da ist mir das mit dem fehlenden Punkt bei Rows.Count nicht aufgefallen.
Daniel hat dir das ja schon geschrieben.
Gruß Werner

Anzeige
AW: Array zeilenweise iterativ kopieren
27.06.2015 14:20:04
Werner
Hallo Bernhard,
hier noch mal mit einer kleinen Ergänzung.
Als Erstes wird dein Zielbereich geleert, 0,5 Sekunden warten, dann wird der Quellbereich zeilenweise mit 0,5 Sekunden Wartezeiten in den Zielbereich kopiert.
Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Public Sub Kopieren()
Dim loLetzteZiel As Long
Dim loletzte As Long
loLetzteZiel = ActiveSheet.Cells(Rows.Count, 7).End(xlUp).Row 'letzte Zeile in Spalte G
With ActiveSheet
.Range(.Cells(4, 7), .Cells(loLetzteZiel, 10)).ClearContents
End With
Call Sleep(500)
loletzte = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row  'letzt Zeile in Spalte B
For i = 4 To loletzte 'von Zeile 4 bis letzt Zeile
'Copy and Paste Makro
With ActiveSheet
.Range(.Cells(i, 2), .Cells(i, 5)).Copy .Cells(i, 7)
End With
'Warten
Call Sleep(500) '0,5 Sekunden
Next i
End Sub
Gruß Werner

Anzeige
AW: Array zeilenweise iterativ kopieren
29.06.2015 07:03:35
Bernhard
Hallo zusammen,
vielen Dank, jetzt macht er, was er soll....
Nur: das vba läuft nur, wenn ich es aus dem sheet heraus starte, wo es arbeitet... in dem Falle das sheet "gefiltert".
Ich möchte aber sehen, wie er die Grafik sukzessive zeichnet, d.h., das vba soll aus dem Sheet "Grafik" heraus "startbar" sein, und er soll während des Kopiervorgangs nur eben das sheet "Grafik" anzeigen.
Wie kann ich das erreichen?
Besten Dank und Grüße,
Bernhard

AW: Array zeilenweise iterativ kopieren
29.06.2015 20:25:54
Werner
Hallo Bernhard,
einfach im Code jeweils
ActiveSheet durch Worksheets("gefiltert") ersetzen.
Gruß Werner
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige