Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1964to1968
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

Neuer per VBA vergebener Blattname in Code einbauen

Neuer per VBA vergebener Blattname in Code einbauen
15.02.2024 11:43:08
DiMa64
Hallo,
wahrscheinlich bin ich der Doof, der zum hundertsten mal fragt, aber ich bin in VBA eine Niete. Folgendes Problem: Ich habe eine "Grundtabelle_Vorlage" für Projekte. Aus dieser Vorlage generiere ich per VBA (Schaltfläche "erstelle neues Projekt") eine Kopie für ein neues Projekt und vergebe in dem Zug mittels InputBox einen neuen Blattnamen. Das funktioniert super. Jetzt habe ich in der "Grundtabelle_Vorlage" eine weitere Schaltfläche, mit der ich mittel VBA Code einige Zellwerte in eine weitere Tabelle (hier Kurzzusammenfassung aller Projekte) kopiere und auch immer schön in die erste frei Zeile angesprochen wird und die gewählten Daten dahin eingefügt werden. Das funktioniert auch. Aber nur aus der "Grundtabelle_Vorlage" heraus. Aus der neu generierten Tabelle nicht, da ja im Code in der "Grundtabelle_Vorlage" der "abgebende Tabellennamen" eingebaut ist. Es müsste aber der neu generierte verwendet werden. Heisst also, wenn ich ein Projektblatt neu generiere und es als Projekt1 benenne, dann müsste in dem Code zum weiter geben von Zellwerten an die Zusammenfassungstabelle der Name "Projekt1" im Code als abgebende Tabelle verwendet werden und nicht der ursprünglich hinterlegte Werte "Grundtabelle_Vorlage". Es wäre gut wenn man den Tabellennamen so hinterlegt, dass er immer das aktive Blatt nimmt. Ich hoffe ich habe es nicht zu umständlich beschrieben und hoffe mir von der Fachwelt Hilfe. Vielen Dank schon mal im Voraus.

Hier der Code für die neu zu generierende Projektseite:

Private Sub CommandButton1_Click()
Worksheets("Grundtabelle_Vorlage").Copy before:=Worksheets("Grundtabelle_Vorlage") 'Bitte den Sheet angeben, vor dem das neue Arbeitsblatt eingefügt werden soll
ActiveSheet.Name = "Projekt " & Worksheets.Count - 1
ActiveSheet.CommandButton1.Visible = False 'nicht sichtbar 'Button wird auf der neu generierten Tabelle ausgeblendet
ActiveSheet.Name = InputBox("Bitte geben Sie den Namen für das neue Projekt ein!", "Erstellen Blattname")
ActiveSheet.Name = ActiveSheet.Name
'ActiveSheet.CommandButton2.Visible = True 'sichbar machen des zweiten Button
ActiveSheet.Range("E2").Select
End Sub

Und hier der Code der dann mit einer zweiten Schaltfläche genutzt wird um Daten (Hier H8/J8/L8) in die Zusammenfassung "Projektliste" kopiert wird.


Sub transfer_werte()

Dim Feld1 As String, Feld3 As String, Feld5 As String
Worksheets("Grundtabelle_Vorlage").Select '''''''Hier liegt der Fehler, es müsste der neu generierte Tabellennamen verwendet werden
Feld1 = Range("H8")
Feld3 = Range("J8")
Feld5 = Range("L8")
Worksheets("Projektliste").Select
Worksheets("Projektliste").Range("A1").Select
If Worksheets("Projektliste").Range("A1").Offset(1, 0) > "" Then
Worksheets("Projektliste").Range("A1").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Feld1
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Feld3
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Feld5

End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neuer per VBA vergebener Blattname in Code einbauen
15.02.2024 12:18:33
Yal
Hallo DiMa,

nicht zweifeln, es kommt alles nach und nach.

Wenn ein Code im Codepane einer Tabelle liegt, dann unterliegt es dieses Objekt. Man kann dafür das Begriff "Me" verwenden

Beispiel: Code in "Grundlage_Vorlage", das Objekt ist ein Worksheet, also:
MsgBox Me.Name
wird "Grundlage_Vorlage" anzeigen.
Kopiert man diese Worksheet und vergibt man die Name "Projekt 5" wird der kopierte, unveränderte Code in Projekt 5 "Projekt 5" anzeigen.


"Select" ist übrigens nur durch den Makrorekorder verursacht. Man kann den Code kürzen:
Sub transfer_werte()

With Worksheets("Projektliste").Range("A99999").End(xlUp) 'von unten kommend, die letzte befüllte Zelle in Spalte A, von da
.Offset(1, 0) = Me.Range("H8").Value 'in 1 nach unten kommt die Werte von H8 des aktuellen Blattes
.Offset(1, 1) = Me.Range("J8").Value '1 nach unten, 1, nach rechts
.Offset(1, 2) = Me.Range("L8").Value 'usw
End With
End Sub


VG
Yal
Anzeige
AW: Neuer per VBA vergebener Blattname in Code einbauen
15.02.2024 12:40:20
DiMa64
Hallo Yal,

Danke für die Erläuterung. Habe Deinen Vorschlag so eingebaut und bekomme eine Fehlermeldung.

Userbild

AW: Neuer per VBA vergebener Blattname in Code einbauen
15.02.2024 15:08:15
Yal
Hallo Dima,

"Wenn ein Code im Codepane einer Tabelle liegt". Ein allgemeine Modul ist nicht Objekt-gebunden, daher gibt es kein Objekt, dass sich als "ich" (eng. Me) bezeichnen kann.

Rechtsklicke auf dem Reiter des Blattes "Projekt xy", wähle "Code anzeigen", dann bist Du direkt im Codepane des Blattes "Projekt xy". Da muss der Code getestet werden.

VG
Yal

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige