2 Probleme mit VBA-Code
05.11.2014 15:08:40
Chris
ich hoffe, ihr könnt mir weiterhelfen.
Ich habe den VBA-Code soweit voll funktionsfähig fertig.
Folgende Funktion:
Es wird wird in einer Tabelle nach dem letzten Eintrag in Spalte A gesucht und dann eine neue fortlaufende Nummer erzeugt. Gleichzeitig wird abgefragt, ob ein dazugehöriges Arbeitsblatt für Notizen angelegt werden soll. Bei Ja, wird das Sheet "Notice" kopiert, hinter dem aktuellen Sheet eingefügt und der Sheetname entsprechend der fortlaufenden Nummer geändert.
Ich habe jetzt noch 2 Probleme:
1. Wenn ich bei der Abfrage auf "Nein" klicke kommt die Meldung "Objektvariable oder With-Blockvariable nicht festgelegt". Beim Debuggen bleibt er an folgender Stelle im Code stehen: wsact.Copy After:=ActiveSheet
Richtigerweise soll er dann nach "Nein" einfach das Makro abbrechen.
2. Ich möchte gerne VOR der Sheet-Kopier-Anweisung prüfen, ob das Sheet schon existiert. Wenn ja, dann soll eine msg-Box-Meldung kommen und das VBA abbrechen.
Könnt ihr mir da bitte helfen?
Hier ist mein fast funktioniertende Code:
Private Sub CommandButton1_Click()
' Folgendes wird gemacht:
' Ermittelt die letzte Änderungsnummer
' fügt eine neue Zeile dahinter ein
' fügt eine neue Änderungsnummer ein
' fragt, ob eine neue Änderungsnotiz erstellt werden soll und kopiert bei Bedarf das _
Sheet "Notice"
' Trägt die neue Änderungsnummer oben im Tabellenblatt ein und unten im Sheetnamen
Dim lngZeile As Long
Dim neuZelle As Long
Dim ChangeNo As Long
Dim wsact As Worksheet
Dim Sheetname As String
' Ermittelt die letzte Änderungsnummer
lngZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'Letzte gefüllte Zeile in Spalte A _
_
suchen
neuZeile = lngZeile + 1
If neuZeile = 17 Then 'Abfragen, ob es die 1. Änderung ist
ChangeNo = 1
Else: ChangeNo = Cells(lngZeile, 1) + 1
End If
' fügt eine neue Zeile dahinter ein
ActiveSheet.Cells(neuZeile, 1).Select
Selection.EntireRow.Copy
Selection.EntireRow.Insert Shift:=xlDown
' fügt eine neue Änderungsnummer ein
Cells(neuZeile, 1) = ChangeNo
' fragt, ob eine neue Änderungsnotiz erstellt werden soll und kopiert bei Bedarf das Sheet " _
Change notice"
If MsgBox("Soll eine neue Änderungsnotiz erstellt werden?", vbYesNo, "Create Change Notice?") = _
_
vbYes _
Then Set wsact = Worksheets("Notice")
Sheetname = "Notice " & ChangeNo
wsact.Copy After:=ActiveSheet
ActiveSheet.Name = "Neu"
Sheets("Neu").Select
ActiveSheet.Name = Sheetname
Sheets(Sheetname).Range("D5") = ChangeNo
End Sub
Danke schon mal vorab.
Grüße
Chris