Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Access Makro Stoppen mit VBA Variable als Bedingung?

Frage Microsoft Microsoft Office

Mitglied: crack24

crack24 (Level 2) - Jetzt verbinden

11.06.2013, aktualisiert 15:59 Uhr, 4081 Aufrufe, 2 Kommentare

Hallo,

ich habe ein Access 2003 Formular mit dem wir neue Kundenaufträge erfassen. Das hat vor 10 Jahren mal jemand für uns programmiert.

Da wird unter anderem eine Bestellnummer vom Kunden angegeben und dann oben auf den OK-Button geklickt. Der OK-Button führt dann ein Makro aus, dass diverse Sachen prüft und dann den Datensatz speichert. Ich mag zwar keine Makros, aber so ist es nun mal programmiert.

So sieht das Formular aus
http://img6.imageshack.us/img6/2927/20130611154446.jpg

Jetzt möchte ich eine Funktion einfügen, die das Feld "Bestellnummer" überprüft, ob diese Nummer schon in der DB vorhanden ist. Das habe ich erstmal so gemacht

Sub Check_Bestellnummer()

If DCount("*", "Fertigung", "[F_Knd_Besl_Nr]='" & Me![F_Knd_Besl_Nr] & "'") > 0 Then
Msg = Ein Auftrag mit dieser Bestellnummer ist schon vorhanden?

End Sub

Private Sub F_Knd_Besl_Nr_LostFocus()
Check_Bestellnummer
End Sub

Wenn dann nach Eingabe der Nummer oben auf OK geklickt wird, kommt auch die Messagebox falls die Nummer doppelt ist. Aber danach wird das Formular trotzdem gespeichert, weil das Makro ja nach der Messagebox weiterläuft.

Kann man irgendwie das Makro durch Abfragen einer VBA Variablen stoppen? Dann könnte ich eine Variable setzen, falls der User bei der Messagebox auf "Abbrechen" drückt und diese Variable dann im OK-Button Makro als erstes abfragen. Den Befehl "stop macro" gibt es ja aber ich weiß nicht wie als Bedingung die Variable checken kann.

Wisst ihr da vielleicht was?

Gruß, Oliver

Mitglied: takeda
11.06.2013 um 19:38 Uhr
Versuch mal:


If MsgBox("Ein Auftrag mit dieser Bestellnummer ist schon vorhanden! Wollen Sie trotzdem speichern?", vbYesNo) = vbNo Then
Me.Undo
Cancel = True
End If



LG Takeda
Bitte warten ..
Mitglied: crack24
12.06.2013, aktualisiert um 09:17 Uhr
Danke, das hat mich schon mal auf die richtige Spur gebracht. Leider sind dann natürlich alle Daten aus dem Formular weg.

Ich hatte jetzt die Idee, dass der Ok-Button nicht das Makro aufruft sondern folgende Funktion

Sub Check_Bestellnummer()

If DCount("*", "Fertigung", "[F_Knd_Besl_Nr]='" & Me![F_Knd_Besl_Nr] & "'") > 0 Then

If MsgBox("Ein Auftrag mit dieser Bestellnummer ist schon vorhanden! Wollen Sie trotzdem speichern?", vbYesNo) = vbYes Then
DoCmd.RunMacro "Formular Erfassung.OK", 1
Else
Cancel = True
End If

End If
End Sub

Wenn man dann in der Message-Box auf "ja" klickt, wird das ursprüngliche Makro aufgerufen. Das macht er auch und legt den Datensatz an, aber stürzt dann seltsamerweise ab und zeigt nur noch die Sanduhr.
Wenn ich das Makro direkt über den Ok-Button aufrufe, funktioniert alles.

Woran kann das denn liegen?

Viele Grüße
Oliver
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst VBA Code Änderung Access 2010 (6)

Frage von Dr.Cornwallis zum Thema VB for Applications ...

VB for Applications
Fusszeile mit PageSetup mit VBA in Excel Makro funktioniert nicht? (5)

Frage von HerrHart zum Thema VB for Applications ...

Microsoft Office
gelöst Zellen mit vba verketten bis Bedingung eintritt (2)

Frage von hellas zum Thema Microsoft Office ...

Datenbanken
Access 2010 - Filter für Datum funkioniert nicht VBA (4)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

LAN, WAN, Wireless
Rogue Access Point (20)

Frage von Axel90 zum Thema LAN, WAN, Wireless ...

Webbrowser
Windows 7 unbeliebte Internetseite sperren (13)

Frage von Daoudi1973 zum Thema Webbrowser ...

E-Mail
Fake E-Mail in Outlook für Demonstartionszwecke (12)

Frage von sascha382 zum Thema E-Mail ...