title image


Smiley Noch ne VBA-Frage: "Subroutine"
Ich habe einen sehr langen VBA-Code geschrieben, der auch wunderbar funktioniert.



Jetzt ist mir aufgefallen, das ich ca. 75% von dem Code an anderen Stellen auch brauche (Überprüfung der Eingaben in einem Userform). Daher dachte ich mit: Als eingenständiges Modul führen und an den Stellen, wo deer Code gebraucht wird, mit "call" aufrufen.



Soweit so gut, aber:



Der ausgegliederte Code wird auch aufgerufen, macht seine Meldung, wenn ein Fehler vorliegt, aber die Prozedur, aus der er heraus aufgerufen wurde, läuft trotzdem weiter !!!!



Wie kann ich verhindern, das der seperate Code von dem "Hauptcode" so untergebuttert wird ???



Hier ist ein Teil des "Hauptcodes:



'Daten in die Tabelle GH_Kunden_D schreiben und eine weitere Eingabe zulassen

Public Sub CommandButton1_Click()

Application.ScreenUpdating = False

Dim tb As Object

Dim cb As Object





Call Kontrolle_der_Kundendaten (das ist der "Prüfcode")



Sheets("GH_Kunden_D").Activate

Range("b1").Select





'letzte belegte Zelle in der Kundennummer bestimmen und den Cursor auf

' eine Zelle tiefer setzen

Range("a65536").End(xlUp).Offset(1, 0).Select



'neue Kundennummer erzeugen

Call hole_neue_KDnr



'Werte aus den Userform in die Tabelle GH_Kunden_D übertragen

With UserForm1

ActiveCell.Offset(0, 1).Value = .Firma.Value

ActiveCell.Offset(0, 2).Value = .ComboBox1.Value

ActiveCell.Offset(0, 3).Value = .VName.Value

ActiveCell.Offset(0, 4).Value = .NName.Value

ActiveCell.Offset(0, 5).Value = .StrHnr.Value

ActiveCell.Offset(0, 6).Value = .PLZ.Value

ActiveCell.Offset(0, 7).Value = .Ort.Value

ActiveCell.Offset(0, 8).Value = .Telefon.Value

ActiveCell.Offset(0, 9).Value = .Fax.Value

ActiveCell.Offset(0, 10).Value = .Abzug.Value

ActiveCell.Offset(0, 11).Value = .ZA.Value

ActiveCell.Offset(0, 12).Value = .UstIdentNr.Value

ActiveCell.Offset(0, 13).Activate



etc., pp, u.s.w.



Und das wird aufgerufen...:



Sub Kontrolle_der_Kundendaten()

'Eingaben überprüfen



' 1.) Firmenname

If UserForm1.Firma = "" Then

MsgBox "Es fehlt die Angabe der Firma !", vbInformation, "Achtung - Aufpassen"

UserForm1.Firma.SetFocus

Exit Sub

End If

' 2.) Wenn NName ausgefüllt, dann muss auch eine Anrede gewählt sein

If UserForm1.NName "" And UserForm1.ComboBox1 = "" Then

MsgBox "Sie haben einen Ansprechpartner eingetragen. Bitte wählen Sie eine Anrede aus !", vbInformation, "Achtung"

UserForm1.ComboBox1.SetFocus

Exit Sub

End If



Es gibt so viele Dinge, die man nicht mit Geld bezahlt, wohl aber mit einem Lächeln, einer Aufmerksamkeit, einem ”Danke“.

Léon-Joseph Suenens (*1904), belgischer katholischer Geistlicher, Erzbischof und Kardinal, Primas von Belgien


In diesem Sinne: Viele Grüße -Gaby


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: