Anzeige
Archiv - Navigation
1808to1812
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

Kopierte Mappen umbenennen

Kopierte Mappen umbenennen
09.02.2021 09:41:17
Stefan
Meine schlechten VBA-Kenntnisse wurden noch schlechter. Nach 5 Tagen ist das Programm fast fertig, jedoch brüte ich schon seit zwei Tagen an der Umbenennung. Ich habe eine Variable a, die wird erfolgreich in die zu kopierende Mappe geschrieben, aber die Mappe wird nicht erzeugt, da der Zählwert n folgenden Fehler erzeugt: "Fehler 424 Objekt erforderlich". Weiß jemand, wo hier der Hase im Pfeffer liegt?
Sub Zaehlen()
Dim a As String
Dim b As String
Dim text As String
Dim i As Integer, n As Integer
Dim XY As String
Dim WS As Worksheet
Hier ist jetzt das funktionierende Programm und nun greife ich auf die Mappe "Muster" zu und kopiere auch erfolgreich die Variablen a, b und text ein..
Sheets("Muster").Select
Worksheets("Muster").Cells(1, 2).Value = a
Worksheets("Muster").Cells(2, 2).Value = b
Worksheets("Muster").Cells(3, 2).Value = text
Sheets("Muster").Select
Sheets("Muster").Activate
n = Active.Sheet.Index
For Each WS In Worksheets
Sheets("Muster").Active
Zellenname = Range("A1")
WS.Name = Zellenname
n = n + 1
Next WS

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopierte Mappen umbenennen
09.02.2021 09:50:12
Lizzel
Hallo Stefan,
mit

Dim DeinNeuerName As String
ThisWorkbook.Worksheets("Muster").Copy After:=ThisWorkbook.Sheets(Sheets.Count)
ActiveSheet.name = DeinNeuerName
das neue Blatt kannst du z.B. über Inputbox abfragen:

DeinNeuerName = InputBox("Neuer Blattname eingeben:")

AW: Kopierte Mappen umbenennen
09.02.2021 10:17:16
Stefan
Danke, habe ich eingefügt. Aber sobald er auf die Zeile
ActiveSheet.name = DeinNeuerName kommt schmeißt er den Fehler
"Laufzeitfehler 1004 Anwendungs- oder objektdefinierter Fehler" raus. Weißt Du evtl. warum?
AW: Kopierte Mappen umbenennen
09.02.2021 10:21:32
Lizzel
Hast du DeinNeuerName vorher schon definiert?
Er will das Blatt ja danach benennen und ohne Variable funktioniert das nicht
Anzeige
AW: Kopierte Mappen umbenennen
09.02.2021 10:25:30
Stefan
Ja, ganz oben mit
Dim DeinNeuerName As String
AW: Kopierte Mappen umbenennen
09.02.2021 11:02:33
Lizzel

ActiveSheet.Name = DeinNeuerName
DeinNeuerName = a
Du willst hier aber das aktive Blatte benennen, bevor du die Variable belegst
AW: Kopierte Mappen umbenennen
09.02.2021 11:06:20
Stefan
Danke für Deine Antwort, jetzt verstehe ich, warum es nicht funktionierte und jetzt aber. Die Variable a ist schon belegt. So wurde die Variable überschrieben!
Wichtiger als die Hilfe, daß es funktioniert, ist die Hilfe zum Verständnis!!!! Danke!
AW: Kopierte Mappen umbenennen
09.02.2021 13:15:08
Piet
Hallo Stefan
wie ich sehe ist der Thread offenbar geklaert, dank der Hife von Lizzel Mizzel. Freut mich
Ich lade dir noch mal den korrigierten Code hoch, der ist sicher übersichlicher und bringt dich wieder zu VBA.
Die For Next Schleife habe ich komplett fallen gelassen. Dafürf mit With Klammern gearbeitet.
mfg Piet
Sub Zaehlen()
Dim a As String
Dim b As String
Dim text As String
Dim i As Integer, n As Integer
Dim XY As String
Dim WS As Worksheet
Dim DeinNeuerName As String
'Worksheets("SaP500").Select
'Worksheets("SaP500").Range("T1:T852").Activate
'** Beide Select sind für die Funktion des Codes überflüssig!
'** amüsant ist, das Range("T1:T852") in der Schleife von
'** ActiveSheet.Cells(i, 20).Activate AUFGEHOBEN wird!!!
For i = 1 To Cells(Rows.Count, 20).End(xlUp).Row
If Not IsEmpty(Cells(i, 20)) Then
With Worksheets("Vergleich")
With .Cells(Rows.Count, 1).End(xlUp)
'ActiveSheet.Cells(i, 20).Activate   'ist überflüssi!!
XY = .Cells(i, 20)
a = Cells(i, 1)             '** ActiveCell.Row = i !!
b = Cells(i + 1, 1)
.Offset(1, 0).Value = a
.Offset(0, 1).Value = b
.Offset(0, 2).Value = "XYZ" & a & "!B7"
.Offset(0, 3).Value = "XYZ" & a & "!C7"
.Offset(0, 4).Value = "XYZ" & a & "!D7"
.Offset(0, 5).Value = "XYZ" & a & "!E7"
.Offset(0, 6).Value = "XYZ" & a & "!F7"
.Offset(0, 7).Value = "XYZ" & a & "!G7"
.Offset(0, 8).Value = Worksheets("SaP500").Cells(i, 27)
.Offset(0, 8).Value = text      '** Welcher Text? Es wurde kein Tect festgelegt!
'** doppelter Fehler - der vorhergehende Text wird durch die LEERE Variable wieder gelöscht!!
'.Offset(1, 3).Value.FormulaLocal = "=" & a & "!C7"
'.Offset(1, 4).Value.FormulaLocal = "=" & a & "!D7"
'.Offset(1, 5).Value.FormulaLocal = "=" & a & "!E7"
'.Offset(1, 6).Value.FormulaLocal = "=" & a & "!F7"
'.Offset(1, 7).Value.FormulaLocal = "=" & a & "!G7"
MsgBox "Kontrolle"
'Sheets("Muster").Select     'überflüssi!! Du schreibst korrekt in die Zellen
Worksheets("Muster").Cells(1, 2).Value = a
Worksheets("Muster").Cells(2, 2).Value = b
Worksheets("Muster").Cells(3, 2).Value = text
'** vor dem Copy must du "DeinneuerName" auch als Text festlegen
'** visher ist das nur eine LEERE Variable, OHNE Text
ThisWorkbook.Worksheets("Muster").Copy After:=ThisWorkbook.Sheets(Sheets.Count)
ActiveSheet.Name = a    '** wobei ich nicht weiss was in "a" drin steht?
DeinNeuerName = a       'Variable hier festlegen bringt nichts!!
End With
End With
End If
Next i
End Sub

Anzeige
AW: Kopierte Mappen umbenennen
09.02.2021 13:21:08
Stefan
Werde ich heute abend mal durchtesten. Jetzt bin ich endlich an den Auswertungen, die ich schon sooo lange machen wollte. Aber mit Deinen Erklärungen ist das Programm verständlicher als das, was ich habe. Einige "Fehler" habe ich Dank Lizzl Mizzl schon erkannt. Herzlichen Dank!
AW: Kopierte Mappen umbenennen
09.02.2021 11:01:12
Stefan
Deine Antwort war fast richtig, aber zumindest bei der Benennung der Mappen zielführend. So funktioniert es.
ThisWorkbook.Worksheets("Muster").Copy After:=ThisWorkbook.Sheets(Sheets.Count)
ActiveSheet.Name = a
Vielen herzlichen Dank für Deine Hilfe
AW: Kopierte Mappen umbenennen
09.02.2021 10:05:40
Rudi
Hallo,
da liegt der Hase im Pfeffer:
n = Active.Sheet.Index
so:
n=ActiveSheet.Index
Gruß
Rudi
über den Rest lass ich mich jetzt nicht aus.
Anzeige
AW: Kopierte Mappen umbenennen
09.02.2021 10:14:06
Stefan
Zuerste einmal danke, daß Du den Tippfehler gefunden hast. Trotzdem habe ich den gleichen Fehler.
AW: Kopierte Mappen umbenennen
09.02.2021 10:20:44
Piet
Nachtrag
der Code sieht mir nach Makro Recorder aus, mit viel unötigem Select und Activate!
Erklaere uns bitte einmal mit Worten was du genau erreichen willst, dann können wir gezielten Rat geben. Ansonsten wird das ein lustiges Ratespiel mit staendiger Laufzeitfehler Analyse!
mfg Piet
AW: Kopierte Mappen umbenennen
09.02.2021 10:09:58
Piet
Gallo Stefan
bevor ich dir einen Rat geben kann warte ich erst mal ab ob dir der Tipp von Lizzel Mizzel weitergeholfen hat? Ansonstne habe ich dein Prıgramm NICHT verstanden, weil du eine For Next Schleife für alle Worksheets im Code hast! Was genau programmierst du da? Ich habs NICHT kapiert, und programmiere seit über 25 Jahren.
mfg Piet
Anzeige
AW: Kopierte Mappen umbenennen
09.02.2021 10:21:27
Stefan
Hi Piet,
ich muß über Deine Antwort sehr schmunzeln! Danke für die BLumen.... Ja, ich bin ein schlechter VBA-Programmierer. :) Deswegen schicke ich Dir mal mein komplettes Programm. Was noch nicht funktioniert, ist, daß die Mappe3 bzw. Mappe"Muster" kopiert werden soll und die Kopie die Variable a erhalten soll. Dies soll sooft passieren, wie die Schleife läuft.
Sub Zaehlen()
Dim a As String
Dim b As String
Dim text As String
Dim i As Integer, n As Integer
Dim XY As String
Dim WS As Worksheet
Dim DeinNeuerName As String
Sheets("SaP500").Select
Worksheets("SaP500").Range("T1:T852").Activate
For i = 1 To Cells(Rows.Count, 20).End(xlUp).Row
If Not IsEmpty(Cells(i, 20)) Then
ActiveSheet.Cells(i, 20).Activate
XY = ActiveCell.Value
a = Cells(ActiveCell.Row, 1)
b = Cells(ActiveCell.Row + 1, 1)
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = a
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(0, 1).Value = b
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(0, 2).Value = "XYZ" &  _
a & "!B7"
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(0, 3).Value = "XYZ" &  _
a & "!C7"
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(0, 4).Value = "XYZ" &  _
a & "!D7"
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(0, 5).Value = "XYZ" &  _
a & "!E7"
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(0, 6).Value = "XYZ" &  _
a & "!F7"
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(0, 7).Value = "XYZ" &  _
a & "!G7"
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(0, 8).Value =  _
Worksheets("SaP500").Cells(i, 27)
Worksheets("Vergleich").Cells(Rows.Count, 1).End(xlUp).Offset(0, 8).Value = text
'Cells(Rows.Count, 1).End(xlUp).Offset(1, 3).Value.FormulaLocal = "=" & a & "!C7"
'Cells(Rows.Count, 1).End(xlUp).Offset(1, 4).Value.FormulaLocal = "=" & a & "!D7"
'Cells(Rows.Count, 1).End(xlUp).Offset(1, 5).Value.FormulaLocal = "=" & a & "!E7"
'Cells(Rows.Count, 1).End(xlUp).Offset(1, 6).Value.FormulaLocal = "=" & a & "!F7"
'Cells(Rows.Count, 1).End(xlUp).Offset(1, 7).Value.FormulaLocal = "=" & a & "!G7"
MsgBox "Kontrolle"
Sheets("Muster").Select
Worksheets("Muster").Cells(1, 2).Value = a
Worksheets("Muster").Cells(2, 2).Value = b
Worksheets("Muster").Cells(3, 2).Value = text
Sheets("Muster").Select
Sheets("Muster").Activate
ThisWorkbook.Worksheets("Muster").Copy After:=ThisWorkbook.Sheets(Sheets.Count)
ActiveSheet.Name = DeinNeuerName
DeinNeuerName = a
n = Active.Sheet.Index
For Each WS In Worksheets
Sheets("Muster").Active
Zellenname = Range("A1")
WS.Name = Zellenname
n = n + 1
Next WS
Else
End If
Next i
End Sub

Anzeige
AW: Kopierte Mappen umbenennen
09.02.2021 10:58:57
Piet
Hallo Stefan
Danke das du mir den kompletten Code geschickt hast, da brauche ich aber auch einige Zeit den zu verstehen und zu korrigieren. Muss gleich Pause machen, mich um Enkel kümmern. In diesem Sinne, ich bleibe dran, brauche aber mit 70 Jahren auch mal meine Pausen.
'Ja, ich bin ein schlechter VBA-Programmierer. :) - Die Aussage akzeptiere ich NICHT!
Sage ieber, ich bin noch Anfaenger, aber ich werde es richtig toll lernen. Ich brauchte 10 Jahre dazu! (Und ich interessiere mich privat für Psychologie und Psyche) Selbstabbwertung gilt bitte Nicht!
zum Code:
mit Dim a As String hast du nur die Variable als String deklariert, damit Excel weiss welcher Variable Typ es ist! Das ist aber kein gültiger Blattname, sondern nur eine LEERE Variable!
Du kannst auch nicht beliebig viele Blaetter kopieren und alle den gleichen Namen über "a" geben! Mehrere Blaetter mit gleichem Namen gibt es nicht. Ausserdem nennt man es Blatt oder Tabelle, aber nicht Mappe. Mappe ist die ganze Datei, Excel nennt es Workbook, und die Blaetter Worksheet oder Sheet. Beachte das bitte, weil wir sonst im Forum technisch aneinander vorbei reden.
Ich habe noch nicht verstanden wieviele Blaetter du genau kopieren willst. Schau dir dazu auch mal den Thread von Lizzel Mizzel an. Da geht es auch um 26 Blaetter kopieren, aber über eine InputBox.
So, nun mach ich Pause, weiss aber nicht wie şange. Brauche einen Kaffee. Bis nachher ...
mfg Piet
PS viele Grüsse aus Ankara. Mein PC ist ein gebrauchter alter Acer mit 48 GB Festplatte.
Nicht der PC ebtscheidet über die Qualitaet eines Codes, sondern die Faehigkeit des Programmierers.
Un Anfaenger war ich auch mal, 1994 hatte ich Null Ahnung von VBA!
Anzeige
AW: Kopierte Mappen umbenennen
09.02.2021 11:43:43
Stefan
Piet,
vielen Dank für Deine netten Worte. Aber ich weiß, daß ich nicht gut in VBA bin, ja sogar schlechter geworden in den letzten 3 Jahren, in denen ich es nicht mehr nutzte. Ich habe vor 4 Jahren ein sehr umfangreiches Programm geschrieben, in dem ich Teilliefermengen berechnen konnte, die anteiligen Kilometer aus dem Internet ermitteln konnte und automatisch Angebote und Rechnungen erstellen konnte, sowie diese in einer Übersichtsliste eintragen. Daran wäre ich jetzt verzweifelt.
Jedenfalls hat der Nachtrag von Lizzel Mizzel dazu geführt, daß mir klar wurde, daß ich die Schleife für die Mappen nciht brauche. Somit funktioniert jetzt nach 5 Tagen mein Programm. Wünsche Dir einen schönen Lebensabend in der Türkei. Vielen Dank für die netten Worte und die angebotene Hilfe.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige