Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1816to1820
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
Inhaltsverzeichnis

Excel Tabellenblatt mit Event Makro

Excel Tabellenblatt mit Event Makro
02.03.2021 11:10:51
Christoph
Hallo zusammen,
ich möchte per Makro ein Tabellenblatt erstellen. Das erstellte Tabellenblatt soll anschließend automatisch seine Spaltenbreite an den Text anpassen.
Code des Tabellenblatts:
Sub FuegeBlaetterMitNamenEin()
Dim Bereich As String
Dim Zelle As Range
Dim Tabelle As Worksheet
Bereich = "a1:a24"
With ActiveWorkbook
For Each Zelle In ActiveSheet.Range(Bereich).Cells
Set Tabelle = .Sheets.Add(After:=.Sheets(Sheets.Count))
Tabelle.Name = Zelle.Text
Next Zelle
End With
End Sub

Code Event Makro:
Private Sub Worksheet_Calculate()
ActiveSheet.Unprotect
Columns("A:Z").AutoFit
ActiveSheet.Cells.Locked = False
ActiveSheet.Range("A1:P5").Locked = True
ActiveSheet.Range("A6:A997").Locked = True
ActiveSheet.Range("I6:J997").Locked = True
ActiveSheet.Protect
End Sub

Wie kann ich dieses Event Makro automatisch beim Erstellen neuer Tabellenblätter hinzufügen?
Gruß Christoph

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Tabellenblatt mit Event Makro
02.03.2021 11:19:06
Rudi
Hallo,
Code per Code hinzufügen geht, aber dafür muss dem Zugriff auf das VBA-Projekt vertraut werden.
Einfacher:
Erstelle ein Musterblatt mit dem Code und kopiere dieses.
oder
Event-Prozedur Workbook_SheetCalculate in DieseArbeitsmappe
Gruß
Rudi

AW: Excel Tabellenblatt mit Event Makro
02.03.2021 11:26:00
Christoph
Hallo Rudi,
wie sähe der Code genauer aus?
Finde aktuell nichts passendes im WWW.
Gruß Christoph

AW: Excel Tabellenblatt mit Event Makro
02.03.2021 11:28:16
Werner
Hallo,
zum Beispiel so:
Sub FuegeBlaetterMitNamenEin()
Dim Zelle As Range
With ActiveWorkbook
Worksheets("Vorlagenblatt").Visible = True
For Each Zelle In ActiveSheet.Range("A1:A24")
If Zelle  "" Then
Worksheets("Vorlagenblatt").Copy After:=.Sheets(Sheets.Count)
ActiveSheet.Name = Zelle.Text
End If
Next Zelle
Worksheets("Vorlagenblatt").Visible = False
End With
End Sub
Vorlagenblatt erstellen, als Vorlagenblatt benennen, Event Makro ins Vorlagenblatt rein, Vorlagenblatt ausblenden.
Gruß Werner

Anzeige
AW: Excel Tabellenblatt mit Event Makro
02.03.2021 11:41:17
Christoph
Hallo Werner,
zum Kopieren eines Blattes ja! Mein Makro welches ein Blatt hinzufügt ist doch sehr umfangreich.
Wäre es möglich nur das Makro eines Vorlagenblatts zu kopieren und dies einem Worksheet hinzuzufügen?
Oder die Variante mit
Event-Prozedur Workbook_SheetCalculate in DieseArbeitsmappe

AW: Excel Tabellenblatt mit Event Makro
02.03.2021 11:52:45
Werner
Hallo,
keine Ahnung was du hiermit sagen willst.
Mein Makro welches ein Blatt hinzufügt ist doch sehr umfangreich.
Und das hier
Wäre es möglich nur das Makro eines Vorlagenblatts zu kopieren und dies einem Worksheet hinzuzufügen?
macht doch das Makro. Du hast ein Vorlagenblatt. In diesem Vorlagenblatt hast du dein Calculate-Event drin. Das Makro kopiert dieses Vorlagenblatt (mit dem Event-Makro). Dann hast du doch genau das, was du willst. Du hast ein neues Tabellenblatt mit dem Calculate-Event.
Und für diese Arbeitsmappe beispielsweise:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Select Case Sh.Name
'hier alle Blätter aufführen in denen das
'Calculate-Event NICHT ausgeführt werden soll
Case "Tabelle1", "Tabelle3", "WasWeißIch"
Case Else
With Sh
'hier der Code deines Calculate-Events
End With
End Select
End Sub
Gruß Werner

Anzeige
AW: Excel Tabellenblatt mit Event Makro
03.03.2021 16:43:27
Christoph
Hallo Werner,
mein Code wäre dieser:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Select Case Sh.Name
Case "Übersicht", "Verlauf", "passiveFinanzierung"
Case Else
With Sh
.Unprotect
.Cells.Locked = False
.Columns("A:O").AutoFit
.Protect
End With
End Select
End Sub
Leider funktioniert es so nicht. Die Tabellenblätter "Übersicht", "Verlauf", "passiveFinanzierung" sollen nicht vom Event betroffen sein, alle anderen Blätter schon.
Gruß Christoph

mein Fehler...
03.03.2021 18:21:22
Werner
Hallo,
...na ja, da hab ich doch tatsächlich die Schleife über die Tabellenblätter vergessen.
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
For Each Sh In ThisWorkbook.Worksheets
Select Case Sh.Name
Case "Übersicht", "Verlauf", "passiveFinanzierung"
Case Else
With Sh
.Unprotect
.Cells.Locked = False
.Columns("A:O").AutoFit
.Protect
End With
End Select
Next Sh
End Sub
Gruß Werner

Anzeige
AW: mein Fehler...
04.03.2021 09:32:17
Christoph
Hallo Werner,
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
For Each Sh In ThisWorkbook.Worksheets
Select Case Sh.Name
Case "Übersicht", "Verlauf", "passiveFinanzierung"
Case Else
With Sh
.Unprotect
.Cells.Locked = False
.Columns("A:O").AutoFit
.Protect
End With
End Select
Next Sh
End Sub
Bei mir funktioniert der Code nicht. Ich will ja, dass die Spalten A bis O aller Tabellenblätter außer "Übersicht", "Verlauf", "passiveFinanzierung" automatisch an die Spaltenbreite angepasst werden, sobald man in diese etwas einträgt.
Gruß Christoph

Anzeige
AW: mein Fehler...
04.03.2021 09:39:52
Werner
Hallo,
und warum denn das Calculate-Events? Das war doch von dir. Das Calculate-Event reagiert auf Formelberechnung.
Wenn es um Eingaben geht dann gibt es dafür das Change-Event
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Gruß Werner

und so...
04.03.2021 09:59:05
Werner
Hallo,
...reagiert das Event nur bei Eingaben in den Spalten A bis O.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
For Each Sh In ThisWorkbook.Worksheets
If Target.Column 
Gruß Werner

Anzeige
AW: und so...
04.03.2021 11:06:39
Christoph
Hallo Werner,
jetzt funktioniert es nur wenn ich Eingaben im Worksheet "Übersicht" mache. In diesem Sheet ist auch das Event Makro.
Gruß Christoph

AW: und so...
04.03.2021 11:11:10
Werner
Hallo,
du wolltest doch ein Makro für das Workbook. Also gehört das Makro auch ins Codmodul von "DieseArbeitsmappe" und nicht i9ns Codemodul eines Tabellenblattes.
Gruß Werner

AW: und so...
04.03.2021 11:53:28
Christoph
Das kenne ich noch gar nicht, wie komme ich ins Codmodul der Arbeitsmappe?

AW: und so...
04.03.2021 11:54:22
Christoph
Habs, passt auch so und funktioniert. Vielen Dank :)

Gerne u. Danke für die Rückmeldung. o.w.T.
04.03.2021 13:47:23
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige