Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Makros nacheinander ausführen
18.06.2009 11:33:36
Philipp
Hallo Leute, dies ist mein erster Eintrag in einem Excel-Forum ever, also hallo erstmal! ;-)
Ich hoffe auf Eure Hilfe zu einem VBA Problem. Habe schon ähnliche Einträge in anderen Foren gefunden, jedoch keine lösung, die bei mir funktioniert.
Problem ist folgendes:
Ich habe verschiedene Codes die einzeln einwandfrei funktionieren per call Befehl zusammen auf einen button gelegt.
Ein schrittweises durchgehen im VBA Editor via F8 funktioniert. Auch wenn in ich in den Abfragen, welche Makro1 aktualisiert, vorher manuell Daten lösche geht es.

Private Sub CommandButton4_Click()
Call Makro1 'aktualisiert alle Tabellenblätter und Abfragen über ActiveWorkbook.RefreshAll
Call Makro2 'Erstellt und benennt neue Tabellenblätter, kopiert Daten aus Vorlage in diese
End Sub


Nun ist es aber so, dass bei vorherigem manuellen löschen einiger Zellen der Abfragen (aus denen in Makro2 der Name für die neuen Tabellenblätter generiert wird), ein "Anwendungs- oder Objektdefinierter Fehler" bei der Benennung der Neuen Tabellenblätter auftritt.
Folglich vermute ich, dass Makro2 schon startet und die neuen Tabellenblätter benennt, während Makro1 noch beim refresh.all befehl ist.
Hier der Code:


Sub Makro1()
ActiveWorkbook.RefreshAll
End Sub
Sub Makro2()
Dim strName As String
Dim Anzahl As Byte
Dim i As Byte
Dim n As Byte
Dim ID As Byte
Sheets("NameNeueTabellenblätter").Select
ActiveSheet.Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Anzahl = Selection.Rows.Count
n = 9
For i = 1 To Anzahl
Sheets.Add After:=Sheets(n)
n = n + 1
Next i
For i = 2 To Anzahl + 1
Sheets("NameNeueTabellenblätter").Select
ActiveSheet.Cells(i, 4).Select
strName = Left(ActiveCell.Value, 31)
Sheets(i + 8).Select
ActiveSheet.Name = strName
Next i
For i = 2 To Anzahl + 1
Sheets("Vorlage").Select
Cells.Select
Selection.Copy
Sheets(i + 8).Select
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Next i
For i = 2 To Anzahl + 1
Sheets("NameNeueTabellenblätter").Select
ActiveSheet.Cells(i, 1).Select
ID = ActiveCell.Value
Sheets(i + 8).Select
ActiveSheet.Range("G3").Value = ID
Next i
End Sub


Kann das sein oder habe ich vielleicht einen anderen Mistbock irgendwo eingebaut?
Ich bin für jeden Lösungsvorschlag sehr sehr dankbar!
Viele Grüße, P.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makros nacheinander ausführen
18.06.2009 12:30:03
D.Saster
Hallo,
versuchs mal so:

Sub Makro2()
Dim strName As String
Dim Anzahl As Byte
Dim i As Byte
Dim n As Byte
Anzahl = Sheets("NameNeueTabellenblätter").Cells(2, 1).End(xlDown).Row - 1
n = 9
For i = 1 To Anzahl
Sheets.Add After:=Sheets(n)
With ActiveSheet
.Name = Left(Sheets("NameNeueTabellenblätter").Cells(i + 1, 4), 31)
Sheets("Vorlage").Cells.Copy .Range("A1")
.Range("G3") = Sheets("NameNeueTabellenblätter").Cells(i + 1, 1)
End With
n = n + 1
Next i
End Sub


Gruß
Dierk

AW: Makros nacheinander ausführen
18.06.2009 14:33:42
Philipp
Hi Dierk,
vielen Dank für deine Hilfe!
Der Code an sich funktioniert wunderbar (rechnet zwar länger als der von mir gepostete aber das ist erstmal egal), er behebt das problem aber leider noch nicht.
Wenn ich in der zu aktualisierenden abfrage vorher manuell Zellen lösche und dann über einen button
call makro1
call makro2
sage, kommt die fehlermeldung an dieser stelle:
.Name = Left(Sheets("x-Beteiligungsnehmerin").Cells(i + 1, 4), 31)
Hast du vielleicht noch eine Idee?
Beste Grüße, Philipp
Anzeige

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige