Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1692to1696
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
Makro mit Makro starten
31.05.2019 10:04:18
Torben
Moin Moin,
ich bin gerade dabei für die Arbeit eine komplexe Excel-Liste zu erstellen, leider ist dabei eine komplikation aufgetreten, welche ich gerne hier mal adressieren würde. Vielleicht kann ja jemand von EUCH-Profis mir hier etwas weiterhelfen :).
Und zwar hat meine Excel-Datei mehrere Tabellenblätter, welche wie Perioden benannt sind P01,P02,etc... über eine Eingabemaske, auf dem ersten Tabellenblatt(DataSheet) sollen Informationen in die einzelnden Perioden übertragen werden.
Da ich nicht für jede Periode den Code bei kleineren Änderungen ändern möchte, sondern nur an einer stelle umschreiben möchte hier meine Frage, wie geht das? ;)
Sub copy()
Dim A As String, B As String, I As String, J As String, K As String, L As String, M As String,  _
N As String, O As String, P As String, Q As String, R As String, S As String, T As String, X As Integer
Range("A52").Value = Range("A52").Value + 1
A = Range("C6")  'Vorgangsnummer
B = Range("G6")  'WIP-JOB-Nummer
C = Range("C46") 'Datum
D = Range("C10") 'Art. Nummer
E = Range("C13") 'Lieferant
F = Range("G10") 'Art. Beschreibung
G = Range("C16") 'Seriennummer
H = Range("G13") 'Anzahl d. Rücklieferungen
I = Range("G16") 'Komponentenkategorie
J = Range("C31") 'Sequence
K = Range("D52") 'Ort des Fehlers
L = Range("A57") 'Interne Nacharbeit
M = Range("C57") 'Hersteller Garantie
N = Range("E57") 'Eigenverschulden
O = Range("F6")  'Bearbeiter
P = Range("B6")  'Fehlerbeschreibung
End Sub
Sub Daten_kopieren_einfügen()
Call copy
If Range("C59").Value = "P02 - Mai" Then
Worksheets("P02").Select
ActiveSheet.Range("A1").Select
Call paste
End If
End Sub
Sub paste()
If ActiveSheet.Range("A1").Offset(1, 0)  "" Then
ActiveSheets.Range("A1").End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = A
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = B
Worksheets("all").Select
ActiveSheet.Range("all").Select
ActiveCell("A1").Select
If ActiveSheet.Range("A1").Offset(1, 0)  "" Then
ActiveSheets.Range("A1").End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = A
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = B
End If
End If
End Sub

Das ist mein bisheriger Code, der leider nicht funktioniert....
Der Sub Daten_kopieren_einfügen()
soll die Daten aus dem Sub copy() bekommen und die dann je nach Periode in das richige Tabellenblatt via Sub paste() einfügen.
Bitte helft mir :D
Viele Grüße aus dem Norden,
Torben

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro mit Makro starten
31.05.2019 10:50:56
onur
Die Dimensionierung muss noch vor "Sub Copy" erfolgen, sonst sind die Variablen NUR in "Sub Copy" gültig.
AW: Makro mit Makro starten
31.05.2019 10:54:53
Torben
Hi,
wie meinst du das? - Die Dimensionierung?
Grüße
AW: Makro mit Makro starten
31.05.2019 10:56:51
onur
Weisst du nicht, was eine Dimensioniereng ist?
Das ist diese Zeile:
Dim A As String, B As String, I As String, J As String, K As String, L As String, M As String, _
N As String, O As String, P As String, Q As String, R As String, S As String, T As String, X As Integer
AW: Makro mit Makro starten
31.05.2019 11:00:00
Torben
Okay,
also wenn ich das davor schreibe:
Dim A as ....
Sub Copy()
sollte das funktionieren?
Habe es gerade mal ausprobiert, funktioniert leider nicht. Er fügt keine Daten in das Blatt P02 ein :(
Grüße,
Anzeige
AW: Makro mit Makro starten
31.05.2019 11:04:46
onur
Ich habe null Ahnung, was genau der Code machen soll, aber bei
Worksheets("P02").Select
ActiveSheet.Range("A1").Select

hebt die 2. Zeile die erste wieder auf - d.h. Worksheets("P02") ist nicht mehr selektiert.
AW: Makro mit Makro starten
31.05.2019 11:14:08
Torben
Okay,
also der Gesamtecode soll Daten von A nach B kopieren, glaube dass Du das auch verstanden hast ;).
Da ich nicht für jede Periode, P01-P12 jedes mal wenn ich etwas am Code ändere, den für jede Periode ändern möchte, versuche ich es, dass über das Makro copy()die Werte aus der Eingabe seite kopiert werden und durch das Makro paste() eingefügt werden. Das ganze habe ich versucht zu kombinieren, sodass ich auf die zwei anderen MAkros zugreife mit dem Makro Daten_kopieren_einfügen()
Konnte das weiterhelfen?
Grüße
Anzeige
AW: Makro mit Makro starten
31.05.2019 11:22:38
onur
Nix für Ungut, aber dein ganzer Code ist völlig unbrauchbar.
Poste doch mal die Datei inkl. Beispielsblatt, wie es nachher aussehen soll (WHIN WAS kopiert werden soll).
AW: Makro mit Makro starten
31.05.2019 14:20:02
fcs
Hallo Thorben,
so sollte es funktionieren.
Es wird nicht mit activesheet und Activecell gearbeit - Das Tabellenblatt bzw. die Zelle aus der Daten gehölt werden sollen bzw. in die geschrieben werden soll wird jweils explizit vorgegeben.
LG
Franz
Private A As String, B As String, C As Date, E, F, G, H, I As String, J As String, _
K As String, L As String, M As String, N As String, O As String, P As String, _
Q As String, R As String, S As String, T As String, X As Integer
Sub prcCopy()
With ActiveWorkbook.Worksheets("DataSheet")
.Range("A52").Value = .Range("A52").Value + 1
A = .Range("C6")  'Vorgangsnummer
B = .Range("G6")  'WIP-JOB-Nummer
C = .Range("C46") 'Datum
D = .Range("C10") 'Art. Nummer
E = .Range("C13") 'Lieferant
F = .Range("G10") 'Art. Beschreibung
G = .Range("C16") 'Seriennummer
H = .Range("G13") 'Anzahl d. Rücklieferungen
I = .Range("G16") 'Komponentenkategorie
J = .Range("C31") 'Sequence
K = .Range("D52") 'Ort des Fehlers
L = .Range("A57") 'Interne Nacharbeit
M = .Range("C57") 'Hersteller Garantie
N = .Range("E57") 'Eigenverschulden
O = .Range("F6")  'Bearbeiter
P = .Range("B6")  'Fehlerbeschreibung
End With
End Sub
Sub Daten_kopieren_einfügen()
Dim strZiel As String, wksZiel As Worksheet
strZiel = Left(Range("C59").Value, 3)
For Each wksZiel In ActiveWorkbook.Worksheets
If LCase(wksZiel.Name) = LCase(strZiel) Then Exit For
Next
If wksZiel Is Nothing Then
MsgBox "Das Blatt zur Periode """ & strZiel & """ ist noch nicht angelegt!", _
vbInformation, "Daten übertraen"
Else
Call prcCopy
Call prcPaste(wksZielblatt:=wksZiel)
End If
End Sub
Sub prcPaste(wksZielblatt As Worksheet)
Dim wksAll As Worksheet
Dim zei_N As Long
Set wksAll = ActiveWorkbook.Worksheets("all")
With wksZielblatt
zei_N = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(zei_N, 1) = A
.Cells(zei_N, 2) = B
'u.s.w.
End With
With wksAll
zei_N = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(zei_N, 1) = A
.Cells(zei_N, 2) = B
'u.s.w.
End With
End Sub

Anzeige
AW: Makro mit Makro starten
31.05.2019 14:59:43
Torben
Moin,
kann mir jemand helfen?
Grüße
fcs hat dir doch geantwortet! owT
31.05.2019 15:03:49
SF
AW: fcs hat dir doch geantwortet! owT
31.05.2019 15:11:40
Torben
Moin Franz,
habe das gerade einmal eingefügt, leider kopiert er die Sachen nur in das wks "all" soll das allerdings auch in die entsprechende Periode kopieren...
Grüße,
Torben
AW: fcs hat dir doch geantwortet! owT
01.06.2019 11:03:45
fcs
Hallo Torben,
im Blatt P02 hast du einige Zeillen weiter unten in Spalte A noch eine 7 stehen.
Deshalb werden die Eingaben ausserhalb des sichtbaren Bereich eingetragen.
Scrolle mal nach unten und lösche die Inhalte in den entsprechenden Zeilen, dann sollte es funktionieren.
LG
Franz
AW: Makro mit Makro starten
31.05.2019 15:06:00
Torben
Moin fcs,
habe Deine Nachricht davor nicht gesehen...
Danke für die Antwort!
WErde es ausprobieren.
Grüße,
TOrben
Anzeige
Inhalte in Perioden kopieren
31.05.2019 15:21:04
Peter
Hallo Torben,
wenn ich Deine Tabelle richtig verstanden habe, soll nur eine Zeile kopiert werden. Dazu hier mein Lösungsvorschlag:
https://www.herber.de/bbs/user/130132.xlsm
Bitte trage in das gelb-unterlegte Feld die gewünschte Periode ein. Der Datensatz wird dann sowohl in das Arbeitsblatt "all" als auch in das Periodenblatt eingefügt.
Bitte mal ausprobieren. Rückmeldung wäre schön.
M.f.G. Peter Kloßek
AW: Inhalte in Perioden kopieren
31.05.2019 16:02:17
Torben
VIelen Dank Peter,
in deiner Datei funktioniert es, bei mir leider nicht -.- ...
ich bekomme immer ein Problem mit dem Ausdruck Range(Ansetz1).PasteSpecial xlPasteValues
UNd zwar:
Laufzeitenfehler '1004':
Die Methode 'range' für das Objekt '_Global' ist fehlgeschlagen.
Viele Grüße,
Torben
Anzeige
AW: Inhalte in Perioden kopieren
31.05.2019 16:38:33
onur
Du brauchst nicht ein Blatt zu selectieren, um da was reinzuschreiben.
Ansetz1 und Ansetz2 brauchst du eigentlich auch nicht:
Sub Makro1()
If Range("DataSheet!L5") = 0 Then Exit Sub
Periode = Range("DataSheet!L5")
Range("j5:p5").copy
Sheets("all").Range("j2").PasteSpecial xlPasteValues
Sheets(Periode).Range("j2").PasteSpecial xlPasteValues
Application.CutCopyMode = xlCopy
End Sub

AW: Inhalte in Perioden kopieren
31.05.2019 19:04:23
Peter
Hallo Torben,
wenn es mit meiner Datei auf Deinem Rechner funktioniert, dann kann der aufgetretene Fehler nur bei Dir liegen. Leider kann ich Dir nicht über die Schulter blicken und Dir sagen, was Du falsch machst. Vielleicht nochmal die Datei, bei der der Fehler eintritt, erneut hochladen.
Ansetz1 und Ansetz2 werden benötigt, wenn weitere Zeilen in die jeweiligen Periodenblätter kopiert werden sollen. Z. B., wenn in "DataSheet" der Inhalt des Formulars durch einen anderen Inhalt überschrieben wird, der dann ebenfalls einer Periode zugeordnet werden soll.
M.f.G. Peter Kloßek
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige