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.

Blattnamen automatisch ändern
#11
Hallo Andre,
Nein leider nicht steh auf dem Schlauch Huh
Antworten Top
#12
Hallöchen,
Statt "a2" müsste z. B. Range("A2") stehen.. Eventuell noch der Blattname dazu, also Sheets("Blattname"). Range...
.      \\\|///      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:
  • wavemaster
Antworten Top
#13
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.
Huh 22
Antworten Top
#14
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. Confused

@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:
  • wavemaster
Antworten Top
#15
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.

Danke Ihr seid alle Super 

18 18 18 18


Angehängte Dateien
.xlsm   Muster Az 2021_003.xlsm (Größe: 64,54 KB / Downloads: 3)
Antworten Top
#16
Hallöchen,


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:
  • wavemaster
Antworten Top
#17
Hallo,

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:
  • wavemaster
Antworten Top
#18
Hallo Stefan,
vielen Dank es läuft super. Alles wie gewünscht.

18 18 18 18 18
Antworten Top


Gehe zu:


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