Registriert seit: 13.03.2018
Version(en): Excel 2013
13.03.2018, 15:43
(Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2018, 16:21 von munez94.)
Hey würde mich über jede Hilfe freuen. Im Anhang die Erklärung, hoffe sie ist einigermaßen zu verstehen.
ERKLÄRUNG: In dem Schreenshot 1 ist eine Tabelle zu sehen wo links gebäude eingetragen werden. Nach dem ich die Gebäude eingetragen habe, legt er mir automatisch ein neues Blattregister an mit einem fertigen Layout. In Blattregister Einstellungen ist eine Tabelle wo die einzelnen Energieträger aufgeführt sind. Es kann aber immer wieder sein, dass ein Energieträger hinzukommt. Das zweite Modul, da habe ich "Tabellenblätter_ergänzen" aufgenommen, das heißt er legt die neuen Blattregister immer so an und wenn man was ändern will muss man neue Makros aufnhemen oder im Modul ändern. FRAGE: Kann ich es einrichten, dass jedes mal wenn ich das "Datenblatt layout" überarbeite, excel mir die erstellten Blattregister überprüft und wenn was hinzugekommen ist ergänzt? Habe schon bisschen im Internet geguckt, meine Idee wäre iwas mit "Change".
Für mich eine komplizierte Sache, vvlt fällt euch was dazu ein.
Vielen Dank im Vorraus und Gruß munez94
Registriert seit: 13.03.2018
Version(en): Excel 2013
13.03.2018, 15:44
(Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2018, 16:08 von WillWissen.
Bearbeitungsgrund: Codetags
)
meine Makros: Code: Sub Tabellenblatt_ergänzen()
Application.ScreenUpdating = False Dim x As Long Dim Startwert As Long Dim Endwert As Long
Startwert = Worksheets("Gebäudeliste").Cells(2, 11).Value Endwert = 100000000
For x = Startwert To Endwert Step 1 If Worksheets("Gebäudeliste").Cells(x, 1).Value = "" Then Exit For End If ThisWorkbook.Worksheets.Add.Name = Worksheets("Gebäudeliste").Cells(x, 1).Value
Tabellenblätter_ergänzen Makro '
' ActiveCell.FormulaR1C1 = "Ergebnisfelder Zeitraum 1" Range("A8").Select ActiveCell.FormulaR1C1 = "Ergebnisfelder Zeitraum 2/Vergleich" Range("A3").Select ActiveCell.FormulaR1C1 = "Gas" Range("B3").Select ActiveCell.FormulaR1C1 = "Wärme" Range("C3").Select ActiveCell.FormulaR1C1 = "Fernwärme" Range("D3").Select ActiveCell.FormulaR1C1 = "Strom" Range("E3").Select ActiveCell.FormulaR1C1 = "Heizöl" Range("F3").Select ActiveCell.FormulaR1C1 = "Wasser" Range("G3").Select ActiveCell.FormulaR1C1 = "Kompressor" Range("H3").Select ActiveCell.FormulaR1C1 = "Druckluft" Range("I3").Select ActiveCell.FormulaR1C1 = "Trockner" Range("J3").Select ActiveCell.FormulaR1C1 = "Kompressor Kühlung" Range("K3").Select ActiveCell.FormulaR1C1 = "HGT Aktuell" Range("L3").Select ActiveCell.FormulaR1C1 = "HGT Referenz" Range("M3").Select ActiveCell.FormulaR1C1 = "Wärme bereinigt" Range("N3").Select ActiveCell.FormulaR1C1 = "Strom bereinigt" Range("O3").Select ActiveCell.FormulaR1C1 = "Gas/Kennwert" Range("P3").Select ActiveCell.FormulaR1C1 = "Wärme/Kennwert" Range("Q3").Select ActiveCell.FormulaR1C1 = "Fernwärme/Kennwert" Range("R3").Select ActiveCell.FormulaR1C1 = "Strom/Kennwert" Range("S3").Select ActiveCell.FormulaR1C1 = "Wärme bereinigt/Kennwert" Range("T3").Select ActiveCell.FormulaR1C1 = "Druckluft/Kennwert" Range("U3").Select ActiveCell.FormulaR1C1 = "Wasser/Kennwert" Range("A9").Select ActiveCell.FormulaR1C1 = "Gas" Range("B9").Select ActiveCell.FormulaR1C1 = "Wärme" Range("C9").Select ActiveCell.FormulaR1C1 = "Fernwärme" Range("D9").Select ActiveCell.FormulaR1C1 = "Strom" Range("E9").Select ActiveCell.FormulaR1C1 = "Heizöl" Range("F9").Select ActiveCell.FormulaR1C1 = "Wasser" Range("G9").Select ActiveCell.FormulaR1C1 = "Kompressor" Range("H9").Select ActiveCell.FormulaR1C1 = "Druckluft" Range("I9").Select ActiveCell.FormulaR1C1 = "Trockner" Range("J9").Select ActiveCell.FormulaR1C1 = "Kompressor Kühlung" Range("K9").Select ActiveCell.FormulaR1C1 = "HGT Aktuell" Range("L9").Select ActiveCell.FormulaR1C1 = "HGT Referenz" Range("M9").Select ActiveCell.FormulaR1C1 = "Wärme bereinigt" Range("N9").Select ActiveCell.FormulaR1C1 = "Strom bereinigt" Range("O9").Select ActiveCell.FormulaR1C1 = "Gas/Kennwert" Range("P9").Select ActiveCell.FormulaR1C1 = "Wärme/Kennwert" Range("Q9").Select ActiveCell.FormulaR1C1 = "Fernwärme/Kennwert" Range("R9").Select ActiveCell.FormulaR1C1 = "Strom/Kennwert" Range("S9").Select ActiveCell.FormulaR1C1 = "Wärme bereinigt/Kennwert" Range("T9").Select ActiveCell.FormulaR1C1 = "Druckluft/Kennwert" Range("U9").Select ActiveCell.FormulaR1C1 = "Wasser/Kennwert" Rows("16:16").Select With ActiveWindow .SplitColumn = 0 .SplitRow = 15 End With ActiveWindow.FreezePanes = True ActiveWindow.SmallScroll Down:=-6 Range("A17").Select ActiveCell.FormulaR1C1 = "Datum" Range("B17").Select ActiveCell.FormulaR1C1 = "Gas" Range("C17").Select ActiveCell.FormulaR1C1 = "Wärme" Range("D17").Select ActiveCell.FormulaR1C1 = "Fernwärme" Range("E17").Select ActiveCell.FormulaR1C1 = "Strom" Range("F17").Select ActiveCell.FormulaR1C1 = "Heizöl" Range("G17").Select ActiveCell.FormulaR1C1 = "Wasser" Range("H17").Select ActiveCell.FormulaR1C1 = "Kompressor" Range("I17").Select ActiveCell.FormulaR1C1 = "Druckluft" Range("J17").Select ActiveCell.FormulaR1C1 = "Trockner" Range("K17").Select ActiveCell.FormulaR1C1 = "Kompressor Kühlung" Range("L17").Select ActiveCell.FormulaR1C1 = "HGT Aktuell" Range("M17").Select ActiveCell.FormulaR1C1 = "HGT Referenz" Range("N17").Select ActiveCell.FormulaR1C1 = "Wärme bereinigt" Range("O17").Select ActiveCell.FormulaR1C1 = "Strom bereinigt" Range("P17").Select ActiveCell.FormulaR1C1 = "Gas/Kennwert" Range("Q17").Select ActiveCell.FormulaR1C1 = "Wärme/Kennwert" Range("R17").Select ActiveCell.FormulaR1C1 = "Fernwärme/Kennwert" Range("S17").Select ActiveCell.FormulaR1C1 = "Strom/Kennwert" Range("T17").Select ActiveCell.FormulaR1C1 = "Wärme bereinigt/Kennwert" Range("U17").Select ActiveCell.FormulaR1C1 = "Druckluft/Kennwert" Range("V17").Select ActiveCell.FormulaR1C1 = "Wasser/Kennwert" Range("A4").Select ActiveCell.FormulaR1C1 = _ "=SUMPRODUCT((R18C1:R1000000C1>=Einstellung!R4C2)*(R18C1:R1000000C1<=Einstellung!R4C3)*(R[14]C[1]:R[999996]C[1]))" Range("A4").Select Selection.AutoFill Destination:=Range("A4:AO4"), Type:=xlFillDefault Range("A4:AO4").Select Range("AL4").Select ActiveWindow.ScrollColumn = 29 ActiveWindow.ScrollColumn = 28 ActiveWindow.ScrollColumn = 27 ActiveWindow.ScrollColumn = 26 ActiveWindow.ScrollColumn = 25 ActiveWindow.ScrollColumn = 24 ActiveWindow.ScrollColumn = 23 ActiveWindow.ScrollColumn = 22 ActiveWindow.ScrollColumn = 21 ActiveWindow.ScrollColumn = 20 ActiveWindow.ScrollColumn = 19 ActiveWindow.ScrollColumn = 18 ActiveWindow.ScrollColumn = 17 ActiveWindow.ScrollColumn = 16 ActiveWindow.ScrollColumn = 15 ActiveWindow.ScrollColumn = 13 ActiveWindow.ScrollColumn = 12 ActiveWindow.ScrollColumn = 11 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 9 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range("A10").Select ActiveCell.FormulaR1C1 = _ "=SUMPRODUCT((R18C1:R1000000C1>=Einstellung!R8C2)*(R18C1:R1000000C1<=Einstellung!R8C3)*(R[8]C[1]:R[999990]C[1]))" Range("A10").Select Selection.AutoFill Destination:=Range("A10:AO10"), Type:=xlFillDefault Range("A10:AO10").Select Range("AE23").Select End Sub
ActiveSheet.Move After:=Sheets("Gebäudeliste") Call Tabellenblätter_ergänzen Next Worksheets("Gebäudeliste").Select Application.ScreenUpdating = True End Sub
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hi,
ich habe dein Makro der besseren Lesbarkeit willen in Codetags gesetzt. Und der besseren Bereitschaft wegen zu helfen, würden sich die Helfer sicherlich über eine Anrede und einen Gruß sehr freuen.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 13.03.2018
Version(en): Excel 2013
Vielen Dank. Das habe ich leider nicht hinbekommen, da ich ganz neu in diesem Forum bin.
Sorry für die unübersichtige Frage bzw. Erklärung.
Würde mich über eine Hilfe sehr freuen.
Gruß munez94
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
13.03.2018, 16:29
(Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2018, 16:39 von Käpt'n Blaubär.)
Hallöchen, Zitat:FRAGE: Kann ich es einrichten, dass jedes mal wenn ich das "Datenblatt layout" überarbeite, excel mir die erstellten Blattregister überprüft und wenn was hinzugekommen ist ergänzt? Habe schon bisschen im Internet geguckt, meine Idee wäre iwas mit "Change". ... die Lösung ist meiner Meinung nach nicht gerade trivial zu nennen. Ohne Beispieldatei bin ich hier wieder raus, bevor ich überhaupt drin war :21:
Registriert seit: 13.03.2018
Version(en): Excel 2013
Beispiel.xlsm (Größe: 79,66 KB / Downloads: 9)
Vielen Dank trotzdem. Ich habe jetzt mal die Datei hochgeladen, vllt hilft es.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo, Zitat:... würden sich die Helfer sicherlich über eine Anrede und einen Gruß sehr freuen. Zitat:Vielen Dank. Das habe ich leider nicht hinbekommen, da ich ganz neu in diesem Forum bin. ... na dann ... wir sind hier in einem Forum, nicht in einem Chat.
Registriert seit: 13.03.2018
Version(en): Excel 2013
(13.03.2018, 16:44)Käpt\n Blaubär schrieb: Hallo,
... na dann ... wir sind hier in einem Forum, nicht in einem Chat. war bezüglich der codetags. Anrede habe ich davor versehntlich gelöscht, da ich zu viele Zeichen hatte. Gruß
Registriert seit: 04.12.2017
Version(en): 2003-2013
13.03.2018, 18:33
(Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2018, 18:33 von Wastl.)
Hi munez94 , ich habe nicht kapiert was du willst, aber mal dein Makro "Tabellenblätter_ergänzen()" etwas gekürzt Code: Sub Tabellenblätter_ergänzen() ' ' Tabellenblätter_ergänzen Makro ' Dim intI As Integer ' Range("A2").FormulaR1C1 = "Ergebnisfelder Zeitraum 1" Range("A8").FormulaR1C1 = "Ergebnisfelder Zeitraum 2/Vergleich" For intI = 1 To 21 Cells(3, intI) = Choose(intI, "Gas", "Wärme", "Fernwärme", "Strom", "Heizöl", "Wasser", "Kompressor", "Druckluft", "Trockner", "Kompressor Kühlung", "HGT Aktuell", "HGT Referenz", "Wärme bereinigt", "Strom/bereinigt", "Gas/Kennwert", "Wärme/Kennwert", "Fernwärme/Kennwert", "Strom/Kennwert", "Wärme bereinigt/Kennwert", "Druckluft/Kennwert", "Wasser/Kennwert") Next intI For intI = 1 To 21 Cells(9, intI) = Choose(intI, "Gas", "Wärme", "Fernwärme", "Strom", "Heizöl", "Wasser", "Kompressor", "Druckluft", "Trockner", "Kompressor Kühlung", "HGT Aktuell", "HGT Referenz", "Wärme bereinigt", "Strom/bereinigt", "Gas/Kennwert", "Wärme/Kennwert", "Fernwärme/Kennwert", "Strom/Kennwert", "Wärme bereinigt/Kennwert", "Druckluft/Kennwert", "Wasser/Kennwert") Next intI With ActiveWindow .SplitColumn = 0 .SplitRow = 15 End With ActiveWindow.FreezePanes = True ' ActiveWindow.SmallScroll Down:=-6 Range("A17").FormulaR1C1 = "Datum" For intI = 1 To 21 Cells(17, intI + 1) = Choose(intI, "Gas", "Wärme", "Fernwärme", "Strom", "Heizöl", "Wasser", "Kompressor", "Druckluft", "Trockner", "Kompressor Kühlung", "HGT Aktuell", "HGT Referenz", "Wärme bereinigt", "Strom/bereinigt", "Gas/Kennwert", "Wärme/Kennwert", "Fernwärme/Kennwert", "Strom/Kennwert", "Wärme bereinigt/Kennwert", "Druckluft/Kennwert", "Wasser/Kennwert") Next intI
Range("A4").FormulaR1C1 = _ "=SUMPRODUCT((R18C1:R1000000C1>=Einstellung!R4C2)*(R18C1:R1000000C1<=Einstellung!R4C3)*(R[14]C[1]:R[999996]C[1]))" Range("A4").AutoFill Destination:=Range("A4:AO4"), Type:=xlFillDefault Range("A10").FormulaR1C1 = _ "=SUMPRODUCT((R18C1:R1000000C1>=Einstellung!R8C2)*(R18C1:R1000000C1<=Einstellung!R8C3)*(R[8]C[1]:R[999990]C[1]))" Range("A10").AutoFill Destination:=Range("A10:AO10"), Type:=xlFillDefault End Sub
Deine Datei is quasi leer und rechnet sich einen Wolf, bis da mal die nächste Eingabe machen kannst kommt vermutlich von deinen vielen indirekt formeln, sie dazu mal den Artikel von Peter Haseroth www.online-excel.de/excel/singsel.php?f=171Auch warum deine Formeln eine Summe über 1 Million leere Zeilen bilden soll ist nicht ersichtlich. Erkläre doch mal dazu, was du da vorhast, vielleicht gibts dafür auch bessere Lösungen Beschreibe bitte doch noch einmal, vielleicht mit anderen Worten, wobei du Hilfestellung benötigst und wie / wo dein Ansatz ist. Edit: Noch einfacher wäre es, wenn du das Tabellenblatt Layout einfach kopierst und dann wie gewünscht umbenennst. Weil das ja schon so aussieht wie das, was du mit dem Makro erreichen willst. Wie das geht, kannste ebenfalls aufzeichnen…
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
13.03.2018, 18:47
(Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2018, 18:48 von RPP63.)
An den Thread-Ersteller: Schon mal darüber nachgedacht, dass eine Datei erst dann erstellt werden sollte, wenn das Datenmodell durchdacht ist? Dein (Rekorder-) Code müht sich vergeblich, falsche Überlegungen bei der Entwicklung der Mappe zu kompensieren. Gönne der Datei bei der Löschung per Entf oder auch Rechtsklick, Löschen die Umschalttaste, auf dass sie gar nicht erst den Papierkorb kennenlernt.
Mag sich böse lesen, ist aber nicht so gemeint! Wenn Du wirklich Hilfe brauchst, solltest Du hier keinen Monster-Thread mit >50 Beiträgen produzieren, denn der Fisch stinkt vom Kopf her.
Disclaimer: Ich gestehe, mir die Logik des Codes nicht verinnerlicht zu haben, bin mir aber dennoch meiner Conclusio sicher …
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
|