Supportnet / Forum / Tabellenkalkulation
Hilfe bei Makro gesucht
Frage
Hallo liebe Leute,
als blutiger Anfänger habe ich versucht ein Makro selbst zu schreiben. Leider funzt es nicht ganz. Wer kann mir helfen?
Mein Problem:
Ich habe eine Tabelle "Neuanmeldung Oberschulen" mit den Sheets "Formular" und "Liste". Und ich habe eine Tabelle "Gesamt Oberschulen" mit den Sheets "Gesamt" und "Auswahl". Per Formular gebe ich im Sheet "Formular" Daten ins Sheet "Liste" ein. Dies Makro funzt.
Im Sheet "Gesamt" der Tab "Gesamt" sind bereits Daten.
Nun möchte ich per Makro die Daten Tabelle "Neuanmeldung Oberschulen" des Sheets "Liste" in die Tabelle "Gesamt" des Sheets "Gesamt" ans Ende der Daten dieses Sheets kopieren. Die Tabelle "Gesamt" ist dabei noch nicht geöffnet.
Mein VBA-Versuch sieht so aus:
Private Sub CommandButton2_Click()
Const LW = "C:"
Const Pfad = "C:\Dokumente und Einstellungen\Administrator.PRIVAT\Desktop\Plakate - Kampagnen\Adressen für Serienbriefe"
Const Datei = "Gesamt Oberschulen.xls"
ChDrive LW
ChDir Pfad
On Error Resume Next
Wert = Workbooks("Neuanmeldung Oberschulen.xls").Worksheets("Liste").Range("A3").Value
Workbooks.Open Datei
Workbooks("Gesamt Oberschulen.xls").Worksheets("Gesamt").Range("A1").Value = Wert
´Application.DisplayAlerts = False
On Error GoTo 0
Dim Liste As Worksheet, Gesamt As Worksheet
Dim Ende As Long
Set Liste = Sheets("Liste"): Set Gesamt = Sheets("Gesamt")
With Liste
Ende = .Cells(Rows.Count, 1).End(xlUp).Row
.Range(.Cells(2, 1), .Cells(Ende, 1).End(xlToRight)).Copy _
Gesamt.Range("A65536").End(xlUp).Offset(1, 0)
End With
Workbooks("Gesamt Oberschulen.xls").Save
Workbooks("Gesamt Oberschulen.xls").Close
End Sub
Antwort 1 von coros
Moin Hamlet24,
kopiere nachfolgenden Code in ein StandardModul und rufe das Makro über eine Befehlsschaltfläche auf.
Teste das mal und melde Dich, wenn irgend etwas nicht so ist, wie Du es Dir vorgestellt hast.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
kopiere nachfolgenden Code in ein StandardModul und rufe das Makro über eine Befehlsschaltfläche auf.
Option Explicit
Sub Daten_kopieren()
Dim Dateiname_Quelle As String, Dateiname_Ziel As String, Datei As Workbook, _
Letzte_Zeile_Dat1 As Long, Letzte_Zeile_Dat2 As Long, Datei_geöffnet As Integer
Application.ScreenUpdating = False
Dateiname_Ziel = "Gesamt Oberschulen.xls"
Dateiname_Quelle = ActiveWorkbook.Name
For Each Datei In Workbooks
If Datei.Name = Dateiname_Ziel Then
GoTo Weiter
End If
Next
Datei_geöffnet = 1
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\Administrator.PRIVAT\Desktop\Plakate - Kampagnen\Adressen für Serienbriefe\" _
& Dateiname_Ziel
Workbooks(Dateiname_Quelle).Activate
Weiter:
Letzte_Zeile_Dat1 = Workbooks(Dateiname_Quelle). _
Sheets("Liste").Range("A65536").End(xlUp).Row
Letzte_Zeile_Dat2 = Workbooks(Dateiname_Ziel). _
Sheets("Gesamt").Range("A65536").End(xlUp).Offset(1, 0).Row
Workbooks(Dateiname_Quelle).Sheets("Liste").Range(Cells(2, 1), _
Cells(Letzte_Zeile_Dat1, 1)).Copy
Workbooks(Dateiname_Ziel).Sheets("Gesamt").Cells(Letzte_Zeile_Dat2, 1).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Workbooks(Dateiname_Ziel).Save
If Datei_geöffnet = 1 Then
Datei_geöffnet = 0
Workbooks(Dateiname_Ziel).Close
End If
End Sub
Das Makro prüft zunächst, ob die Datei "Gesamt Oberschulen.xls" geöffnet ist. Wenn nicht, wird diese geöffnet. Danach werden die Daten aus der Datei "Neuanmeldung Oberschulen.xls" Spalte A in die Datei "Gesamt Oberschulen.xls" in die erste freie Zelle in Spalte A kopiert . Danach wird die Datei "Gesamt Oberschulen.xls" gespeichert und geschlossen. Wobei die Datei nur geschlossen wird, wenn sie nicht vorher schon offen war. War sie bereits geöffnet bleibt sie auch geöffnet. Teste das mal und melde Dich, wenn irgend etwas nicht so ist, wie Du es Dir vorgestellt hast.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

