Hallo Andre, danke erst einmal für die kleinen Hinweise. Aber als laie in VBA kann ich den Angaben nicht folgen und auch nicht umsetzen. Leider.. besteht die Möglich wie schon eingangs erwähnt dieses VBA so umzugestalten das es das macht was ich möchte. Bei jeder Kopie des Blattes einfach eins nach oben zählen .
Danke
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$2" Then Exit Sub Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets If ws.Name = Target Then MsgBox "Dieser Name existiert bereits" Exit Sub End If Next ActiveSheet.Name = Target End Sub
Die Formel funktioniert nur muss ich hier die zahl selbst ändern.
Nun ja Laien bzw Anfänger , bei denen ist wie wenn eine Kuh Steilwand klettern versucht es scheitert kläglich.
25.03.2021, 09:11 (Dieser Beitrag wurde zuletzt bearbeitet: 25.03.2021, 09:12 von Steffl.)
Auch Hallo,
@Andre
das Workbook_NewSheet-Ereignis kann der TE nicht nehmen, weil er kopiert das Tabellenblatt und da wird das Ereignis nicht ausgelöst.
@Wavemaster
versuche es mal so (bitte in die zu kopierende Tabelle einfügen)
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$2" Then Me.Copy after:=Worksheets(Me.Index) ActiveSheet.Name = "AZ " & Format(Val(Mid(Target.Value, 4)) + 1, "00") ActiveSheet.Range("A2").Value = "AZ " & Format(Val(Mid(Target.Value, 4)) + 1, "00") End If Cancel = True End Sub
ausgelöst wird das Ereignis bei einem Rechtsklick auf die Zelle A2.
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • wavemaster
Hallo Stefan, bin jetzt ein wenig verwirrt. Ich habe jetzt eine VBA im Arbeitsblatt und eine in der Arbeitsmappe. Die vermutlich das gleiche machen nur 2 verschiedene VBA`s welche muß ich löschen. Im Anhang die Datei. Wäre super wenn Ihr mal reinschauen könntet und die löschen wo nicht benötigt wird und die andere einsetzen.
also, willst DU nun die Formel nehmen oder nicht? In AZ01!A2 steht keine ... Falls ja, lösche alle Codes und Module die Du findest, trage die Formel ein und im Codemodul vom Blatt Stefans Code.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • wavemaster
lösche alle Codes in dem Klassenmodul DieseArbeitsmappe! Lösche auch die Codes im Tabellenmodul und füge nur diesen in die Tabelle AZ01 ein.
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim rngTreffer As Range
If Target.Address = "$A$2" And Left(Me.Name, 2) = "AZ" Then Me.Copy after:=Worksheets(Me.Index) ActiveSheet.Name = "AZ" & Format(Val(Mid(Target.Value, 3)) + 1, "00") ActiveSheet.Range("A2").Value = "AZ" & Format(Mid(Target.Value, 3) + 1, "00") Set rngTreffer = Me.Columns(2).Find("Auftragssumme", LookIn:=xlValues, lookat:=xlWhole) Worksheets("Nachträge").Range("D16").Resize(2).FormulaR1C1 = "=SUM('" & ActiveSheet.Name & "'!R[" & rngTreffer.Row - 16 & "]C[4])" Worksheets("Nachträge").Range("D20").FormulaR1C1 = "=SUM('" & ActiveSheet.Name & "'!R[" & rngTreffer.Row - 15 & "]C[4])" End If Cancel = True End Sub
PS: Die Schreibweise deiner Tabellennamen ist sehr entscheidend! AZ01 unterscheidet sich zu AZ 01. Mein Code berücksichtigt kein Leerzeichen. Und er läuft in einen Fehler, wenn du zum Beispiel AZ01 bis AZ05 angelegt hast, das Makro auf dem Blatt AZ03 ausgeführt wird.
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • wavemaster