Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Blattregister mit Makros automatisch anpassen
#1
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
Antworten Top
#2
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
Antworten Top
#3
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)
Antworten Top
#4
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
Antworten Top
#5
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:
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#6

.xlsm   Beispiel.xlsm (Größe: 79,66 KB / Downloads: 9)

Vielen Dank trotzdem. Ich habe jetzt mal die Datei hochgeladen, vllt hilft es.
Antworten Top
#7
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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#8
(13.03.2018, 15: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ß
Antworten Top
#9
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=171

Auch 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…
Antworten Top
#10
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)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste