Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

2 Probleme mit VBA-Code

Betrifft: 2 Probleme mit VBA-Code von: Chris
Geschrieben am: 05.11.2014 15:08:40

Hallo,
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

  

Betrifft: AW: 2 Probleme mit VBA-Code von: Rudi Maintaire
Geschrieben am: 05.11.2014 15:24:07

Hallo,

  ....
  .... 
  Cells(neuZeile, 1) = ChangeNo
  SheetName = "Notice " & ChangeNo
  On Error Resume Next
  Set wks = Sheets(SheetName)
  On Error GoTo 0
  If wks Is Nothing Then
    If MsgBox("Soll eine neue Änderungsnotiz erstellt werden?", _
      vbYesNo, "Create Change Notice?") = vbYes Then
        Set wsAct = Worksheets("Notice")
        wsAct.Copy After:=ActiveSheet
        With ActiveSheet
          .Name = SheetName
          .Range("D5") = ChangeNo
        End With
    End If
  Else
    MsgBox "Blat  " & SheetName & " existiert bereits!", , "Gebe bekannt ..."
  End If
End Sub

Gruß
Rudi


  

Betrifft: AW: 2 Probleme mit VBA-Code von: Chris
Geschrieben am: 05.11.2014 15:42:50

Hallo Rudi,

vielen Dank, hab deinen geänderten Code bei mir reinkopiert.
Er bleibt bei der Zeile If wks Is Nothing Then hängen. Alles vorher klappt noch.
Hast da eine Idee?
Gruß
Chris


  

Betrifft: AW: 2 Probleme mit VBA-Code von: Rudi Maintaire
Geschrieben am: 05.11.2014 16:23:44

hallo,
wie hast du wks deklariert? Als Worksheet?

Gruß
Rudi


  

Betrifft: AW: 2 Probleme mit VBA-Code von: Chris
Geschrieben am: 05.11.2014 16:28:00

Tja, das hatte ich vergessen.
Habs jetzt als Worksheet deklariert, und es funktioniert super.
Danke dir.


 

Beiträge aus den Excel-Beispielen zum Thema "2 Probleme mit VBA-Code"