Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
544to548
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
544to548
544to548
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA-Daten

VBA-Daten
12.01.2005 15:05:11
Andreas
Hallo Excel Freunde,
ich brauche Hilfe bei folgender Aufgabe.
Aus einem Blatt („x“) werden Daten in ein Blatt („y“) rein geschrieben.
Wenn die Daten unten (Spalte A;65350) angekommen sind, soll das fortschreiben der Daten drei Spalten weiter(Spalte D), ganz oben wieder fortgesetzt werden.
Vielen Dank.
Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Daten
Volker
Hallo Andreas,
da die Hellseher hier im Forum wohl grade offline sind, versuch ich dein Problem mal einzugrenzen: Wie und wo stehen denn die Daten in Tabelle(y) ?
Gruß
Volker
AW: VBA-Daten
12.01.2005 20:29:29
Andreas
Hallo Volker,
nett das du dich meiner Frage zuwendest.
Die Daten werden in Spalte "A" geschrieben. Code für den Transfer und das prüfen ob die Zelle voll ist habe ich mir schon gebastelt.
Wie ich das aber hin bekomme das bei 65300 drei Spalten nach rechts und dann hochgelaufen wird bis zur obersten freien Zelle, das schaff ich nicht.
(Wenn sich das so oft wiederholen würde bis das Blatt Y voll ist wäre Prima)
Danke erstmal.
Andreas
Anzeige
AW: VBA-Daten
13.01.2005 11:16:57
Volker
Hallo Andreas,
leider hast Du dein Excel-Level nicht angegeben. Muß ich jetzt bei Adam und Eva anfangen, oder bist Du einigermaßen fit?
Ich würde jedenfalls bei der Aktion einfach eine Zählervariable mitlaufen lassen.
Ich geh mal davon aus, dass die Spalten im Blatt y nicht bis unten gefüllt sind,
aber keine Leerzellen, -spalten oder -zeilen dazwischen vorkommen

Sub kopieren()
Dim i, j, k, l, spalten As Integer
spalte = Sheets(y).UsedRange.Rows.Count
i = 1
j = 1
k = 1
l = 1
For j = 1 To spalte
For i = 1 To Sheets(y).Cells(i, 1).End(xlDown)
Sheets(x).Cells(k, l) = Sheets(y).Cells(i, j) <> ""
k = k + 1
If k > 65300 Then 'Letze Zeile ist allerdings 65536
k = 1
l = l + 1
End If
Next
Next
End Sub

Ist allerdings ungetestet. Schau mal, ob es so geht.
Gruß
Volker
Anzeige
AW: VBA-Daten
13.01.2005 11:32:11
Andreas
Danke Volker, dass du dich um mein Problem kümmerst.
Den Code kann ich erst um 15.00 Uhr heute ausprobieren.
Ich melde mich dann noch mal.
Meine Kenntnisse sind größer als kein VBA aber auch nicht VBA gut.
Beim einstellen hatte ich was ausgewählt, aber wo das geblieben ist? :-)
Vielen Dank.
Bis 15.oo Uhr oder kurz danach.
Andreas
bin gespannt o.T.
Volker
x
AW: bin gespannt o.T.
13.01.2005 22:06:19
Andreas
Hallo Volker!
Leider ist es erst Spät was geworden.
Irgend was funzt nicht.
Hier habe ich mal meinen COde:
Sheets("quittung").Select 'quittung ist X
Range("A2").Select 'Zellinhalt wird copy
Selection.Copy
Sheets("USST_1_4_Jahr").Select
Range("A1").Select
While ActiveCell.Value ""
'erste freie zelle in (Y)wird gesucht und
' wird mit zahl aus (X)gefüllt
ActiveCell.Offset(1, 0).Select
Wend
ActiveSheet.Paste
Irgend wo unten (65500)wird dann noch meine Auswertung plaziert.Deswegen die "komische" Zellnummer. Dann muss der Schritt folgen 3 SPalten (bei zelle 65500)nach rechts und in der Spalte bis ganz nach oben um von oben wieder mit dem einfügen von daten, wenn sie dann anfallen, fort zu fahren.
Ich hoffe ich habe ein wenig Licht in das Dunkel meiner FRage gebracht!
Hattest du diesen Vorgang in deinem Code?
Ich habe das nicht erkannt!
Trotzdem erstmal danke.
M.f.G
Andreas
Anzeige
AW: bin gespannt o.T.
Volker
Hallo Andreas,
au Backe! Kein Wunder dass Du mit meinem Code nichts anfangen konntest.
Ich hab grad gemerkt, dass ich da ziemlichen Schrott geschrieben hab.
Hier also nochmal und hoffentlich richtig:

Sub kopieren()
Dim i, j, k, l, spalten As Integer
spalten = Sheets("quittung").UsedRange.Columns.Count 'Anzahl Spalten
i = 1   'Zähler für Zeilen in "quittung"
j = 1   'Zähler für Spalten in "quittung"
k = 1   'Zähler für Zeilen in "USST_1_4_Jahr"
l = 1   'Zähler für Spalten in "USST_1_4_Jahr"
For j = 1 To spalten 'von Spalte 1 bis letzte Spalte
For i = 1 To Sheets("quittung").Cells(1, j).End(xlDown) 'bis letzte Zeile in Spalte j
Sheets("USST_1_4_Jahr").Cells(k, l) = Sheets(y).Cells(i, j)
k = k + 1   'nächste Zeile von "USST_1_4_Jahr"
If k > 65300 Then 'wenn Zeile 65300 erreicht, dann
k = 1   '1.Zelle in.........
l = l + 1   'nächster Spalte
End If
Next
Next
End Sub

Die Zählervariablen müßten eigentlich so funktionieren.
Wenn es irgendwo hakt: wenn Du im Code Haltepunkte setzt, kannst Du dir den aktuellen Wert ansehen, wenn Du mit dem Cursor auf die Variable gehst.
Gib mal laut, ob es funzt.
Gruß
Volker
Anzeige
AW: bin gespannt o.T.
14.01.2005 11:08:44
Andreas
HAllo Volker,
danke für deine Antwort.
Funzt leider immmer noch nicht.
HAbe jetzt folgenden COde:

Sub kopieren()
Dim i, j, k, l, spalten As Integer
spalten = Sheets("quittung").UsedRange.Columns.Count 'Anzahl Spalten
i = 1   'Zähler für Zeilen in "quittung"
j = 1   'Zähler für Spalten in "quittung"
k = 1   'Zähler für Zeilen in "USST_1_4_Jahr"
l = 1   'Zähler für Spalten in "USST_1_4_Jahr"
For j = 1 To spalten 'von Spalte 1 bis letzte Spalte
'For i = 1 To Sheets("quittung").Select 'Cells(1, j).End(xlDown) 'bis letzte Zeile in Spalte j
Sheets("quittung").Select
Range("A1").Select 'bereich a1 aussuchen
Selection.Copy 'den ausgesuchten bereich copy
Sheets("USST_1_4_Jahr").Select 'blatt "u" suchen
'[A1] .Select
Range("A1").Select 'bereich a1 aussuchen
While ActiveCell.Value <> "" 'die gerade aktivierte zelle überprüfen ob sie leer ist
ActiveCell.Offset(1, 0).Select 'wenn sie leer ist wert einschreiben, wenn sie nicht leer ist eine zelle nach unten springen
Wend 'schleifenende
ActiveSheet.Paste
'an dieser Stelle sollte er (der code)inhalt von a1 (quittung)in spalte 1 von USST_1_4_Jahr  in der 1. freien zelle eintragen, wenn die aber voll oder zelle 65300 ist, soll er 3 spalten nach rechts und dann nach oben und oben wieder den wert der dann eventuell nicht in die 1 spalte von USST_1_4Jahr gepasst hatte eintragen.
Kannst du bitte noch mal ein BLick darauf werfen?
'Sheets("USST_1_4_Jahr").Cells(k, l) = Sheets(y).Cells(i, j)
k = k + 1   'nächste Zeile von "USST_1_4_Jahr"
If k > 65300 Then 'wenn Zeile 65300 erreicht, dann
k = 1   '1.Zelle in.........
l = l + 3   'nächster 3 Spalte
End If
Next
'Next
End Sub

Vielen Dank erst mal.
Mit freundlichen Grüßen
Andreas
Anzeige
AW: bin gespannt o.T.
14.01.2005 23:10:09
Andreas
Danke.
ich werde die Aufgabe anders noch mal einstellen.
Danke noch mal allen die sich versucht haben.
Andreas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige