Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1472to1476
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

mit VBA Blatt kopieren und durch anderes ersetzen

mit VBA Blatt kopieren und durch anderes ersetzen
30.01.2016 09:50:37
Larcher

Hallo
Ich hänge fest und hoffe Ihr könnt mir da helfen.
was habe ich :
Ich habe ein kleines Programm mit dem man Angebote schreiben kann.
In der Startseite ein Button "neues Angebot" und eine Ansicht der letzten 3 geschriebenen Angebote. daneben jeweils ein Button "ändern"
Bei klick auf ändern ruft es dieses Angebot auf und kann geändert werden.
passt ganz gut.
nun zum wesentlichem
bei klick auf " neues Angebot"
* Überprüfen welches das älteste ist, sind 2 mit dem gleichen Datum zu finden soll dieser das erste das er findet nehmen.
* nachdem dieses gefunden wurde muss die Vorlagesheet kopiert und durch die gefundene sheet ersetzt werden. Der Name der Vorlagesheet sollte wieder so heißen wie die zuvor gefundene.
Diese habe ich "Angebot A 1" "Angebot A 2" "Angebot A 3" genannt
beispiel : Angebot A 2 ist das älteste - Wird gelöscht - Vorlage wird kopiert - umbenennen in Angebot A 2 - anzeigen
anch dem Datum kann in der Startseite gesucht werden oder in den jeweiligen Angebote sheet´s
Startseite ist es F19 / F21 / F23
Angebot ist es V19:Y19 ( also V19)
Wie kann ich das realisieren ?
mfg Rene

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

Betreff
Datum
Anwender
Anzeige
AW: mit VBA Blatt kopieren und durch anderes ersetzen
30.01.2016 11:52:17
Larcher
Hallo Michael
Vielen Dank Funktioniert wunderbar.
Echt vielen Dank
Gruß Rene

freut mich, danke für die Rückmeldung owT
30.01.2016 12:26:40
Michael
Gruß,
Michael

AW: freut mich, danke für die Rückmeldung owT
30.01.2016 13:24:49
Larcher
Hallo
nun hab ich doch noch eine Frage
Am ende schreibt mit dieser das Datum in die Zellen F.....
dies hab ich gelöscht weil beim speichern des angebotes wird dort das Datum dann eingetragen.
Ich brauche am ende des codes das aktivieren der seite.
Habe es mit .select versucht aber ohne erfolg.
Gruß rene

Anzeige
AW: freut mich, danke für die Rückmeldung owT
30.01.2016 15:22:47
Larcher
Hallo
noch etwas
Ich habe auf der Vorlage einige Buttons und Schaltflächen sowie auswahllisten,....
Dein Code fügt mir aber nur die Cellen ein ( + Schaltflächen ) und behällt dies in der Zwischenablage.
Super wäre wenn es mir die komplette Vorlage 1 zu 1 kopiert und umbenennt.
Somit wäre auch im falle eines falles, wenn ein Button verschoben oder gelöscht oder verändert wird alles wieder beim alten.
Und
In jedem Angebot 1,2,3 habe ich einen button "Angebot neu erstellen"
wass muss gelöscht werden wenn ich angenommen im "Angebot 2" arbeite und neu beginnen will?
Dieser befehl soll das gleiche machen wie oben nur ohne den Datumvergleich.
Danke Gruß Rene

Anzeige
Wer anders bitte - bin am Wochenende weg
30.01.2016 16:46:21
Michael

AW: Wer anders bitte - bin am Wochenende weg
30.01.2016 20:30:29
Larcher
Kann mir jemand helfen Bitte

AW: Wer anders bitte - bin am Wochenende weg
31.01.2016 15:08:49
Larcher
Hallo
Ich habe den code mal selber versucht abzuändern, hat geklappt.
dieser sieht nun so aus.

Private Sub CommandButton1_Click()
Dim angebotNr As Long
Dim angebot As String
angebotNr = ActiveWorkbook.Name
Application.DisplayAlerts = False
Sheets("Angebot A " & angebotNr).Delete
Application.DisplayAlerts = True
Sheets("Vorlage").Select
ActiveSheet.Copy Before:=ActiveSheet
'Sheets("Vorlage").Copy Before:=Sheets(5)
Sheets("Vorlage (2)").Name = ("Angebot A " & angebotNr)
Application.CutCopyMode = False
Sheets("Angebot A " & angebotNr).Activate
End Sub
aber bei der änderung in dem Angebot komme ich nicht mit.
da muss ich ja den Namen der Sheet ( merken ) um ihn nachher wieder einzugügen.
kann mir da jemand Bitte weiterhelfen.
Dank
mfg Rene

Anzeige
...und schon wieder da.
01.02.2016 16:28:11
Michael
Hi Rene,
hat sich keiner erbarmt...
Also, ich habe das in die bestehende Sub integriert - Du wolltest ja schließlich, daß sich das Makro den ältesten Datumswert aussucht:
Private Sub CommandButton1_Click()
Dim zeile As Long, angebotNr As Long
Dim angebot As String
Dim BlattNr As Long  ' **** neu ****
zeile = 21
If Range("F19") 
Die Position des zu ersetzenden Blatts wird vor dem Löschen in die Variable BlattNr gesteckt und beim .Copy mit after BlattNr - 1 verwendet. Also: wenn die Vorlage das 3. Blatt ist, wird das Neue nach dem 2. angelegt, dann ist es wieder das 3.
Allerdings solltest Du sicherstellen, daß die Vorlagen nicht ganz links stehen, denn sonst könnte BlattNr - 1 = 0 sein, dann spuckt Excel.
Schöne Grüße,
Michael

Anzeige
AW: ...und schon wieder da.
01.02.2016 23:48:26
Larcher
Hallo Michael,
Schönes WE gehabt hoffe schon.
Ich saß an deinem Code und hab herumgetüftelt :-)
Leider hat sich sonst niemand gemeldet weshalb ich es neu gepostet habe- hoffe das ist erlaubt.
Nun ja
Ich habe es nun so gelöst
Dein Code traf es ja fast wie die Faust aufs A.... nur wurden bei deinem nur der Blattinhalt kopiert nicht die Buttons die ich auch drin habe.
Hab dies mal so gelöst

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Call passwortraus
Dim zeile As Long, angebotNr As Long
Dim angebot As String
zeile = 21
If Range("F19") 

bei den einzelnen Angebots Seiten habe ich versucht den Code abzuändern.
Im Angebot brauch ich ja keine Datumsvergleich.
nun kurz um es hat gezwickt ohne Ende.
mal hat es mir den Namen nicht eingesetzt,.... bis zum tollen Fehler
"Wechsel in den Haltemodus nicht möglich"
bin dann doch noch drauf gekommen das ich nicht von einer Seite aus einen Code ausführen kann die ich nachher löschen will, lösche ja dann den Code auch mit raus.
Dies habe ich dann so gelöst

Sub NeuesAngebotA()
Dim blattName As String
blattName = ActiveSheet.Name
Sheets("Vorlage A").Copy Before:=ActiveSheet
Sheets("Vorlage A (2)").Activate
Application.DisplayAlerts = False
Sheets(blattName).Delete
Application.DisplayAlerts = True
Sheets("Vorlage A (2)").Name = (blattName)
Application.CutCopyMode = False
Sheets(blattName).Activate
End Sub

Alles getestet und wunderbar funkt´s
Danke dir dein Code war der Ursprung und die Lösung. :-)
Gruß Rene L.

Anzeige
super, freut mich & danke für die Rückmeldung owT
04.02.2016 16:25:58
Michael

333 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige