Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
VBA: Arbeitsblatt kopieren
11.10.2007 00:17:00
Andreas
Hallo Experten!
Ich bräuchte bitte mal Eure Hilfe.
Ich möchte ein Arbeitsblatt (=Basis), dass hidden ist, in derselben Mappe unter anderem Namen (NeuerBlattname) und an einer bestimmten Stelle (drittletztes Blatt) einfügen. Unter E2000 läuft's im Prinzip, aber unter E97 nicht. Weiß da jemand von Euch vielleicht weiter? Und vielleicht auch, wie ich den Code noch verschlanken bzw. optimieren kann? Es soll natürlich vor dem Einfügen des neuen Blatts auch gecheckt werden, ob bereits eines vorhanden ist, das schon so heißt.
Hier mein bisheriger Code:
Dim wks As Worksheet, NeuerBlattname$, AktuellesSheet$
AktuellesSheet = ActiveSheet.Name
NeuerBlattname = InputBox("Bitte Blattname eingeben:", , )
On Error Resume Next
Set wks = Worksheets(NeuerBlattname)
On Error GoTo 0
If wks Is Nothing Then
Sheets("Basis").Copy after:=Worksheets(Worksheets.Count - 2) ' das Blatt "Basis" ist veryhidden!
On Error Resume Next
Worksheets(Worksheets.Count - 2).Name = NeuerBlattname
Sheets(NeuerBlattname).Visible = True
Worksheets(AktuellesSheet).Select
End If
Besten Dank im Voraus,
Andreas X

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Arbeitsblatt kopieren
11.10.2007 01:16:57
Daniel
Hi
keine Ahnung, wo die Unterschiede in den Versionen liegen.
ich würde den Code mal so schreiben, inclusive der Plausichecks
- Blattname schon vorhanden
- Länge eingehalten
- verbotene Sonderzeichen.
die Einabe muss solange wiederholt werden, bis alles passt.
daher können dann die OnERRORS bei der Erstellung entfallen.
irgendwie hab ein ein Problem, das ausgeblendete Blatt zu kopieren, daher wirds kurz sichtbar gemacht.

Sub Makro1()
Dim wks As Worksheet, NeuerBlattname$, AktuellesSheet$
Dim I As Long
Dim Nochmal As Boolean
AktuellesSheet = ActiveSheet.Name
Do
Nochmal = False
NeuerBlattname = InputBox("Bitte Blattname eingeben:")
For I = 1 To ActiveWorkbook.Sheets.Count
If Sheets(I).Name = NeuerBlattname Then Exit For
Next
If I  31 Then Nochmal = True
For I = 1 To Len(":/\?*[]")
If InStr(NeuerBlattname, Mid("*:/\?[]", I, 1)) > 0 Then Nochmal = True
Next
If Not Nochmal Then Exit Do
MsgBox ("bitta andern Blattnamen eingeben, Name schon vergeben, länger als 31 Zeichen oder  _
verbotenes Sonderzeichen vorhanden :/\?*[]")
Loop
With Sheets("Basis")
.Visible = -1
.Copy after:=Worksheets(Worksheets.Count - 2)
.Visible = 2
End With
ActiveSheet.Name = NeuerBlattname
Worksheets(AktuellesSheet).Select
End Sub


Gruß, Daniel

Anzeige
AW: VBA: Arbeitsblatt kopieren
11.10.2007 09:50:41
Andreas
Hallo Daniel,
die Sache sieht viel sauberer aus als meine. Vielen Dank.
Ich habe allerdings irgendwie immer noch das Problem, dass es unter Excel8 (Office97) hängen bleibt bei dem Schritt
Sheets("Basis").Copy after:=Worksheets(Worksheets.Count - 2)
Weißt Du da vielleicht auch noch weiter? Braucht's da vielleicht eines Trick, so dass das auch unter Excel8 läuft?
Besten Gruß,
Andreas X

AW: VBA: Arbeitsblatt kopieren
11.10.2007 09:56:59
Andreas
Sorry, hab' mich vertan.
Es bleibt nicht hängen an der Stelle, sondern das neue Blatt bekommt einfach nicht den dafür vorgesehenen Namen (sondern heißt leider immer noch "Basis (2)" und das Vorlageblatt "Basis" bleibt immer noch eingeblendet, also sichtbar.

Anzeige
AW: VBA: Arbeitsblatt kopieren
11.10.2007 21:15:12
Daniel
Sorry, keine Ahnung.
Excel 97 haben wir bei uns im Büro vor ein paar Jahren in Pension geschickt.
Zeiche noch einfach mal das Umbenennen eines Blattes mit dem Recorder auf.
Vielleicht lassen sich da die Unterschiede im Code erkennen.
Gruß, Daniel

AW: VBA: Arbeitsblatt kopieren
12.10.2007 11:34:23
Andreas
Ich danke Dir Daniel!
Schade, dass Ihr kein E97 mehr habt, war doch 'n gutes Dingen! :-)
Mit dem Recorder hatte ich es auch schon probiert, aber das gab keinen Unterschied.
Es ist leider immer noch so, dass das Makro einfach mit dem Befehl
Sheets("Basis").Copy after:=Sheets(Sheets.Count - 2)
ohne Fehlermeldung aussteigt und der Rest des Makros nicht mehr abgearbeitet wird (also das Umbenennen des neuen Arbeitsblattes und das Ausblenden des Basis-Arbeitsblattes).
Ich habe beim Recherchieren auch noch einen Hinweis auf "TakeFocusOnClick = False" gefunden, habe aber den Eindruck, dass es bei meinem Button (erzeugt mit Ansicht, Formular, Schaltfläche) nicht von Bedeutung ist - zumindest finde ich keine Möglichkeit, dass so einzuellen.
Jetzt hoffe ich darauf, dass vielleicht Herbert oder Hajo noch eine Lösung wissen.
Besten Gruß Dir Daniel und vielen Dank für Deine Unterstützung,
Andreas x

Anzeige
AW: VBA: Arbeitsblatt kopieren
12.10.2007 20:58:00
Daniel
Hi
bist du sicher, daß du auch mindestens 3 Sheets in deiner Datei hast?
bei zweien funktioniert dieser Code nicht.
Ansonsten würde ich deinen Code nochmal durchsuchen, ob nicht doch noch irgendwo ein ON ERROR MACH WAS aktiv ist, daß dir die hilfreiche Fehlermeldung unterdrückt.
jetzt würde nur noch ne beispieldatei mit dem vollständigen Code helfen.
Gruß, Daniel

AW: VBA: Arbeitsblatt kopieren
12.10.2007 21:07:00
Andreas
Hallo Daniel,
wie hängt man die denn hier an?
Andreas

AW: VBA: Arbeitsblatt kopieren
12.10.2007 21:16:26
Andreas
Hallo Daniel,
ich habe mal probeweise alle Formeln im Basis-Arbeitsblatt gelöscht, Darin enthalten sind auch selbstgestrickte Funktionen, die im VBA hinterlegt sind und natürlich alle ausgeführt werden, wenn dieses Blatt als Kopie zusätzlich in der Mappe eingefügt wird.
Jetzt wo die Zellen leer sind, funktioniert's auch in E8.
Ich müsste irgendwie die Calculation, also die Berechnungen der Zellen in dem neu angelegten Arbeitsblatt vorübergehend deaktivieren können und erst am Ende des Kopiervorgangs wieder aktivieren.
Weißt du mir welchem Befehl das möglich ist?
Betsen Gruß
Andreas X

Anzeige
AW: VBA: Arbeitsblatt kopieren
12.10.2007 21:23:56
Daniel
Hi
weiß ich schon, verrate ich aber nicht ;-).
du kannst aber in den Extras-Optionen die automatische Berechnung von Hand ein- und ausschalten und diese Aktion mit dem Recorder aufzeichnen.
Gruß, Daniel

AW: VBA: Arbeitsblatt kopieren
12.10.2007 21:44:09
Andreas
Du bist ja 'n Fuchs! :-)
Application.Calculation = xlManual ' zusammengebastelt nach Hinweisen aus der Rekorderaufzeichnung
Application.Calculation = xlCalculationManual ' per Suche im Forum
Ich werd's gleich mal testen. Bin gespannt.

AW: VBA: Arbeitsblatt kopieren
12.10.2007 21:57:16
Andreas
Yeahpp!
Es funktionuckääält!
Danke für Deine Hilfe (auch zur Selbsthilfe) und Deine Ausdauer, Daniel!
Wenn Du mir Deine E-Mail-Adresse sendest, will ich mich mal dafür bei Dir auf besondere Weise bedanken.
Schönen Abend Dir,
Andreas X
nospam2me1(at)gmx.de
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige