Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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

Makro erweitern

Makro erweitern
Tommy
Hey Leute!
Ich habe für eine Tipprunde ein Makro zum Einlesen von Tipps und möchte dieses gerne anpassen. Und zwar soll der Tipp ab Zeile 4 bis Zeile 147 eingefügt werden; dort wo die nächte leere Zeile ist quasi, damit die Tipps alle untereinander stehen.
Sub TippsEinlesen()
Dim wbZiel As Workbook, wbQuelle As Workbook, rngDaten As Range, i As Integer
Dim Bereich(1 To 3) As String
Dim Zeile(1 To 3) As Long 'Oberen Index festlegen entsprechend der Anzahl Bereiche die kpiert  _
werden
Set wbZiel = Workbooks.Open(Filename:="C:\Speicherort\XXX.xls") 'Datei in die die Tipps  _
kopiert werden
Bereich(1) = "A4:L4" 'Bereich, der in 1. Tabelle kopiert werden soll; hier sind Tipps
Bereich(2) = "A10:L10" 'Bereich, der in 2. Tabelle kopiert werden soll; hier sind Tipps
Bereich(3) = "A16:L16" 'Bereich, der in 3. Tabelle kopiert werden soll; hier sind Tipps
'Nächste frei Zielzeile in den Tabellen der Zieltabellen ermitteln
For i = 1 To UBound(Zeile)
With wbZiel.Sheets(i)
' Zeile(i) = .UsedRange.Row + .UsedRange.Rows.Count
'Alternative Möglichkeit
'Nachfolgend Spalte wählen in der immer Daten stehen!
Zeile(i) = .Cells(.Rows.Count, "C").End(xlUp).Row + 1
End With
Next i
Do
'Datendatei öffnen
Datei = Application.Dialogs(xlDialogOpen).Show
If Datei = False Then Exit Sub
Application.ScreenUpdating = False
Set wbQuelle = ActiveWorkbook
'Formate und Daten aus den Bereichen in die Zieltabellen kopieren
For i = 1 To UBound(Bereich)
Set rngDaten = wbQuelle.Sheets(1).Range(Bereich(i))
rngDaten.Copy
With wbZiel.Sheets(i)
.Cells(Zeile(i), "C").PasteSpecial Paste:=xlFormats
.Cells(Zeile(i), "C").PasteSpecial Paste:=xlValues
End With
Zeile(i) = Zeile(i) + 1
Next i
Application.CutCopyMode = False
wbQuelle.Close Savechanges = False
Application.ScreenUpdating = True
wbZiel.Save
Loop Until MsgBox("Weitere Datei bearbeiten?", vbQuestion + vbYesNo, "Daten einlesen") = vbNo
wbZiel.Close
End Sub
Nun hapert es daran, dass die nächste freie Zielzeile falsch ermittelt wird, da ab Zeile 150 noch weitere Tabellen und Auflistungen erscheinen. Kann man das anpassen? Danke für eure Hilfe.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro erweitern
24.08.2009 21:04:36
Oberschlumpf
Hi Tommy
Ich habe deinen Code mal "versucht".
Aber schon die Code-Zeile
Set wbZiel = Workbooks.Open(Filename:="C:\Speicherort\XXX.xls") 'Datei in die die Tipps _
kopiert werden
führt zum Fehler.
Der Grund ist, weil auf meinem PC die Datei "C:\Speicherort\XXX.xls" nicht existiert.
Genau so kenne ich die Tabellen 1-3 nicht, dessen zugehörige Werte in den Variablen Bereich(1) - Bereich(3) abgelegt werden sollen.
Und auch der Inhalt von wbQuelle ist mir nicht bekannt.
Daher wäre es vielleicht am Besten, du stellst uns von allen involvierten Dateien, Bsp-Dateien zur Verfügung, die natürlich dem Aufbau der Originaldateien entsprechen. Und auch der VBA-Code, der dir Sorgen bereitet, sollte nicht fehlen.
Ciao
Thorsten
Anzeige
AW: Makro erweitern
24.08.2009 21:17:18
Tommy
Hi Thorsten.
Danke erst einmal.
Anbei die Datei als Beispiel. Reiter 1 bis 3 sind quasi die Liste in die kopiert wird und Reiter 4 entspricht einem Tippformular.
https://www.herber.de/bbs/user/64021.xls
Die grün markierten Bereiche werden in die Liste kopiert. Zeile 4 in Tab1, Zeile 10 in Tab2 und Zeile 16 in Tab3... und beginnend in Zeile 4. Der nächste Datensatz wäre dann in Zeile 5 usw.
AW: Makro erweitern
24.08.2009 21:31:49
Gerd
Hallo Tommy,
ungetestet.
Zeile(i) = Application.Max(4, .Cells(147, 3).End(xlUp).Row + 1)
if Zeile(i)= 148 then msgbox "Full house": exit sub
Gruß Gerd
Anzeige
AW: Makro erweitern
25.08.2009 19:27:34
Tommy
Wo muss das denn dann genau hinzu? Klappt bei mir leider nicht.
AW: Makro erweitern
25.08.2009 19:51:42
Gerd
Die Codezeile unter "Alternative..." damit ersetzen
Getestet hatte ich - wie gesagt - nicht.
Auch guten Abend
Gerd
AW: Makro erweitern
25.08.2009 19:56:49
Tommy
Hallo Gerd,
dann kommt ein Fehler beim kompilieren:
Unzulässiger oder unzureichend definiertet Verweis und er springt zu Cells.
AW: Makro erweitern
25.08.2009 19:58:58
Tommy
ah, der Punkt war zuviel
AW: Makro erweitern
25.08.2009 20:02:50
Tommy
habe zwar den punkt vor cells rausgenommen und dann ließt er auch den ersten datensatz richtig ein, aber die folgenden werden in ganz falsche zeilen geschrieben und nicht fortlaufend.
AW: Makro erweitern
25.08.2009 20:11:37
Gerd
Google mal nach "Nettiquette"
Wirf die verbundenen Zellen raus. Ersetze , 3 durch , 4 .
Lust zum Nachbauen fehlt mir.
Gruß Gerd
Anzeige
AW: Makro erweitern
26.08.2009 07:08:43
Tommy
Guten Morgen.
Verstehe ich ehrlich gesagt nicht ganz. 3 ist durch 4 ersetzt und nun fängt er bei Zeile 37 an und setzt den nächsten in Zeile 38. Die beiden Basistabellen sind ja hochgeladen. Wäre schön, wenn mir da noch jmd. helfen könnte, das Problem zu lösen. Danke.
AW: Makro erweitern
29.08.2009 21:03:05
fcs
Hallo Tommy,
folgende Anpassung sollte die korrekte Zeile ermitteln.
    'Nächste frei Zielzeile in den Tabellen der Zieltabellen ermitteln
For i = 1 To UBound(Zeile)
With wbZiel.Sheets(i)
'Nachfolgend Spalte wählen in der immer Daten stehen!
Zeile(i) = .Cells(148, 4).End(xlUp).Row + 1
If Zeile(i) = 148 Then
MsgBox " Alle Zeilen sind mit Daten gefüllt!"
Exit Sub
End If
End With
Next i

Gerds Lösung funktioniert übrigens auch, du muss allso irgendetwas falsch gemacht haben
Grundvoraussetzung ist natürlich das im Moment das in Spalte D (Name) zwischen der Überschriften-Zeile und der Zeile 148 in den Zellen nichts seht.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige