Supportnet / Forum / Tabellenkalkulation
einfacher Code für Makro
Frage
Hi,
mein hoffenltich letztes Thema zu meiner jetzigen Tabelle.
Ich habe einen diletantischen Versuch unternommen ein Makro zu schreiben, das Daten die in einem bestimmten Zellenbereich stehen auf alle Tabellenblätter zu übertragen.
Im Hintergrund steht der Gedanke, dass der Nutzer nicht immer vorher alle Tabellenblätter makieren soll.
Ich füge jetzt meinen code ein und würde mich freuen wenn ihr meinen sehr einfachen und langen code durch einen effetiveren und kürzeren Code ersetzen würdet. Ich hoffe damit zu erreichen, dass sich mögliche Fehler beim ausühren des Makros minimieren lassen.
Sub Makro3()
´
´ Makro3 Makro
´ Makro
´
´ Tastenkombination: Strg+u
´
Application.ScreenUpdating = False
x = ActiveSheet.Name
Range("A2:F150").Select
Selection.Copy
Sheets("Januar").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("Februar").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("März").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("April").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("Mai").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("Juli").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("Juni").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("August").Select
ActiveSheet.Paste
Range("A2").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("September").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("Oktober").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("November").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets("Dezember").Select
Range("A2:F150").Select
ActiveSheet.Paste
Range("A2").Select
Sheets(x).Select
Range("A2").Select
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Antwort 1 von Aliba
Hi,
bin ja nun auch nicht der VB-ler, aber wenn ich das mit dem Recorder aufzeichne, kommt folgendes raus:
Sub Makro1()
Range("A2:F150").Select
Selection.Copy
Sheets(Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", _
"September", "Oktober", "November", "Dezember")).Select
Sheets("Januar").Activate
Range("A2").Select
ActiveSheet.Paste
Sheets("Tabelle1").Select
Application.CutCopyMode = False
End Sub
CU Aliba
bin ja nun auch nicht der VB-ler, aber wenn ich das mit dem Recorder aufzeichne, kommt folgendes raus:
Sub Makro1()
Range("A2:F150").Select
Selection.Copy
Sheets(Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", _
"September", "Oktober", "November", "Dezember")).Select
Sheets("Januar").Activate
Range("A2").Select
ActiveSheet.Paste
Sheets("Tabelle1").Select
Application.CutCopyMode = False
End Sub
CU Aliba
Antwort 2 von nighty
hi all :)
angenommen es sind 13 sheets
das erste sheet mit den basisdaten die dann auf sheets 2-13 (12 sheets) kopiert werden
gruss nighty
Sub KopierenBereich()
Dim zaehler As Integer
For zaehler = 2 To 13
Sheets(1).Range("A2:F150").Copy Sheets(zaehler).Range("A2:F150")
Next zaehler
End Sub
angenommen es sind 13 sheets
das erste sheet mit den basisdaten die dann auf sheets 2-13 (12 sheets) kopiert werden
gruss nighty
Sub KopierenBereich()
Dim zaehler As Integer
For zaehler = 2 To 13
Sheets(1).Range("A2:F150").Copy Sheets(zaehler).Range("A2:F150")
Next zaehler
End Sub
Antwort 3 von 911Penta
@nighty: dann muss ich aber Daten die auf alle anderen Blätter übernommen werden sollen immer in Blatt 1 schreiben?
Antwort 4 von 911Penta
hmm also er sollte schon auf allen Blättern die Dateneingabe akzeptieren und übertragen
@aliba dein Code will bei mir nicht so recht!
@aliba dein Code will bei mir nicht so recht!
Antwort 5 von coros
Hallo Penta,
es wäre jetzt hilfreich gewesen, wenn Du geschrieben hättest, was an dem Code von @aliba nicht funktioniert. Denn nach erstem Augenschein macht er das, was auch Dein Code macht. Er kopiert den Bereich A2:F150 und fügt die Daten in die Blätter Januar bis Dezember ab Zelle A2 wieder ein. Was funktioniert daran nicht, bzw. ist nicht so, wie Du es Dir vorstellst?
MfG,
Oliver
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.
es wäre jetzt hilfreich gewesen, wenn Du geschrieben hättest, was an dem Code von @aliba nicht funktioniert. Denn nach erstem Augenschein macht er das, was auch Dein Code macht. Er kopiert den Bereich A2:F150 und fügt die Daten in die Blätter Januar bis Dezember ab Zelle A2 wieder ein. Was funktioniert daran nicht, bzw. ist nicht so, wie Du es Dir vorstellst?
MfG,
Oliver
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.
Antwort 6 von JoeKe
Moin Penta,
kopiere folgenden Code in das VBA-Projekt "DieseArbeitsmappe":
Option Explicit
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = False
Set Target = Intersect(Target, Range("A2:F150"))
If Target Is Nothing Then
ActiveSheet.Select
Else
Sheets(Array("Januar", "Februar", "März", "April", "Mai", "Juni", _
"Juli", "August", "September", "Oktober", "November", "Dezember")).Select
Range("A2").Select
End If
Application.ScreenUpdating = True
End Sub
Wird auf einem Tabellenblatt eine Zelle im Bereich A2:F150 angewählt, werden alle Blätter ausgewählt und somit Eingaben in diesem Bereich auf allen Blättern gleichzeitig durchgeführt. Wird eine Zelle außerhalb dieses Bereiches ausgewählt werden Eingaben nur auf dem aktiven Blatt eingetragen.
Gruß
JöKe
kopiere folgenden Code in das VBA-Projekt "DieseArbeitsmappe":
Option Explicit
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = False
Set Target = Intersect(Target, Range("A2:F150"))
If Target Is Nothing Then
ActiveSheet.Select
Else
Sheets(Array("Januar", "Februar", "März", "April", "Mai", "Juni", _
"Juli", "August", "September", "Oktober", "November", "Dezember")).Select
Range("A2").Select
End If
Application.ScreenUpdating = True
End Sub
Wird auf einem Tabellenblatt eine Zelle im Bereich A2:F150 angewählt, werden alle Blätter ausgewählt und somit Eingaben in diesem Bereich auf allen Blättern gleichzeitig durchgeführt. Wird eine Zelle außerhalb dieses Bereiches ausgewählt werden Eingaben nur auf dem aktiven Blatt eingetragen.
Gruß
JöKe
Antwort 7 von 911Penta
ich probiers gleich mal aus!
Antwort 8 von 911Penta
wenn ich den code inefüge dann makiert er alle blätter soblad ich in den richtigen bereich klicke, aber ich kann dann keine zelle markieren und was hinen schreiben da er immer zu a2 geht immer zu...........
hab ich was falsch gemachT?
wenn ich außerhalb klicke gehts......
hab ich was falsch gemachT?
wenn ich außerhalb klicke gehts......
Antwort 9 von 911Penta
hat sich erledigt !!!
hab den fegler in meinem code gefunden.
jetzt klapptrs bei mir ohne Fehelr.
Ich hatte nur selcet doppelt drin im August und das hatte ihn verwirrt!
hab den fegler in meinem code gefunden.
jetzt klapptrs bei mir ohne Fehelr.
Ich hatte nur selcet doppelt drin im August und das hatte ihn verwirrt!
Antwort 10 von JoeKe
Hallo Penta,
in meinem Code ist ein Fehler.
Die Zeile:
Range("A2").Select
ist vom testen übrig geblieben und muss raus.
Schönes WE
JöKe
in meinem Code ist ein Fehler.
Die Zeile:
Range("A2").Select
ist vom testen übrig geblieben und muss raus.
Schönes WE
JöKe
Antwort 11 von 911Penta
danke!!!
jetzt hab ich 2 funktionierende codes....mal testen welcher besser ist...deiner ist auf jedenfall kompakter deswegen werde ich deinen wahrscheinlich nehmen!! also danke!
schönes wochenende
jetzt hab ich 2 funktionierende codes....mal testen welcher besser ist...deiner ist auf jedenfall kompakter deswegen werde ich deinen wahrscheinlich nehmen!! also danke!
schönes wochenende

