Supportnet Computer
Planet of Tech

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

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

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!

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.

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

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......

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!

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: