PDA

Vollständige Version anzeigen : If-Verzweigung


Robert1986
05.06.2013, 09:06
Hallo an alle!

Bin gerade dabei ein Makro zu erstellen und verzweifele mittlerweile an einer If-Verzweigung.

Abhängig davon ob in der Zelle B2 ein Wert steht oder nicht soll das Tabellenblatt unter dem befindlichen Namen gespeichert werden. Wenn nichts in B2 steht soll eine MSGBox den User auffordern eine Bezeichnung in Zelle B2 zu schreiben.

Hier der Code zu meinem Vorhaben:

Private Sub CommandButton1_Click()


ActiveSheet.Copy

Application.ScreenUpdating = False

ActiveSheet.Shapes("1. Nicht benötigte Zellen markieren").Delete

ActiveSheet.Shapes("2.Markierte Zellen löschen").Delete

ActiveSheet.Shapes("3.Kopieren Verschieben").Delete

Cells.Hyperlinks.Delete

If Cells(2, 2).Value = "" Then
MsgBox "Bitte Maschinenbezeichnung in Zelle B2 eingeben!"

Unload Me

Else
Sheets("MMS_Montage").Select
Sheets("MMS_Montage").Move Before:=Workbooks(UserForm1.Dateifenster.Value).Sheets(1)

ActiveWorkbook.Sheets(1).Name = Range("B2").Value

Application.ScreenUpdating = True

MsgBox " Die Datei wurde in die Datei: " & UserForm1.Dateifenster.Value & " verschoben!"

End If

Unload Me
End Sub

Leider ist es derzeit so, dass Trotz leerer Zelle das Worksheet in eine neue Datei kopiert wird (aus welchen Gründen auch immer ^^)

Für Lösungsvorschläge wäre ich sehr dankbar.

Viele Grüße

Robert

hary
05.06.2013, 09:13
Moin
Ohne den Code umzubauen, beendet einfach Sub.

If Cells(2, 2).Value = "" Then
MsgBox "Bitte Maschinenbezeichnung in Zelle B2 eingeben!"
Unload Me
Exit Sub

gruss hary

Robert1986
05.06.2013, 09:24
Hallo Hary,

vielen Dank für deine schnelle Rückmeldung. Hab es mit dem Ausdruck "Exit Sub" versucht, dass Tabellenblatt wird trotzdem in eine neue Datei verschonben. :( Hab es auch schon mit

If Range("B2").Value = "" Then

und mit

If Cells(2, 2).Value = Null Then

probiert aber nichts von den Sachen klappt. :(

hary
05.06.2013, 09:32
Moin
Refernzier mal
If Cells(2, 2) 'dass it das Ative Blatt

so
If Worksheets("Tabelle1").Cells(2,2) 'Name anpassen.

Also wenn ich mit Exit Sub den Code beende, wird der Code nicht weiter ausgefuehrt.
Test mal im Einzelschritt welchen Wert Cells(2, 2) hat.
Leerzeichen ist auch nicht leer.
gruss hary

Robert1986
05.06.2013, 09:50
Servus Hary,

Hab es mit

If Worksheets("MMS_Montage").Cells(2, 2).Value = "" Then

und mit

If ActiveWorkbook.Sheets(1).Cells(2, 2).Value = "" Then

versucht. Leider wird immer wieder eine neue Arbeitsmappe geladen.

Hab dann noch versucht an der Else Anweisung eine Bedingung zu hängen:

Else

If Worksheets("MMS_Montage").Cells(2, 2).Value <> "" Then

Sheets("MMS_Montage").Select
Sheets("MMS_Montage").Move Before:=Workbooks(UserForm1.Dateifenster.Value).Sheets(1)

ActiveWorkbook.Sheets(1).Name = Range("B2").Value

Application.ScreenUpdating = True

MsgBox " Die Datei wurde in die Datei: " & UserForm1.Dateifenster.Value & " verschoben!"

Else

Exit Sub

End If

End If

Funktioniert leider alles nichts. Das Tabellenblatt wird in eine neue Arbeitsmappe kopiert unter dem Namen des aktuellen Tabellenblattes "MMS_Montage"

Trotzdem vielen Dank für deine Mühe Hary. Woran könnte es evtl noch liegen?

Viele Grüße

Robert

Robert1986
05.06.2013, 09:55
Ich weiß nicht ob es wichtig ist, aber ich starte dieses Makro mit Hilfe einer Userform. Vielleicht liefert ja dies den entscheidenden Hinweis. :D

hary
05.06.2013, 10:08
Moin
Ich meinte so:
Private Sub CommandButton1_Click()


ActiveSheet.Copy

Application.ScreenUpdating = False

ActiveSheet.Shapes("1. Nicht benötigte Zellen markieren").Delete

ActiveSheet.Shapes("2.Markierte Zellen löschen").Delete

ActiveSheet.Shapes("3.Kopieren Verschieben").Delete

Cells.Hyperlinks.Delete

If Cells(2, 2).Value = "" Then
MsgBox "Bitte Maschinenbezeichnung in Zelle B2 eingeben!"
exit Sub
Unload Me

Else
Sheets("MMS_Montage").Select
Sheets("MMS_Montage").Move Before:=Workbooks(UserForm1.Dateifenster.Value).Sheets(1)

ActiveWorkbook.Sheets(1).Name = Range("B2").Value

Application.ScreenUpdating = True

MsgBox " Die Datei wurde in die Datei: " & UserForm1.Dateifenster.Value & " verschoben!"

End If

Unload Me
End Sub


Und so sieht es schoener aus. Und es wird nix geloescht, wenn der Code nicht ausgefuehrt wird.

Private Sub CommandButton1_Click()
If Cells(2, 2).Value = "" Then
MsgBox "Bitte Maschinenbezeichnung in Zelle B2 eingeben!"
Exit Sub
Unload Me
Else
ActiveSheet.Copy
Application.ScreenUpdating = False
ActiveSheet.Shapes("1. Nicht benötigte Zellen markieren").Delete
ActiveSheet.Shapes("2.Markierte Zellen löschen").Delete
ActiveSheet.Shapes("3.Kopieren Verschieben").Delete
Cells.Hyperlinks.Delete
Sheets("MMS_Montage").Select
Sheets("MMS_Montage").Move Before:=Workbooks(UserForm1.Dateifenster.Value).Sheets(1)
ActiveWorkbook.Sheets(1).Name = Range("B2").Value
Application.ScreenUpdating = True
MsgBox " Die Datei wurde in die Datei: " & UserForm1.Dateifenster.Value & " verschoben!"
End If
Unload Me
End Sub
gruss hary

Robert1986
05.06.2013, 10:17
Hallo Hary,

hab den 2ten Code ausprobiert. Der funktioniert super.

Vielen Dank und einen schönen Tag noch!

Viele Grüße

Robert