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, 4053 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
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 ...

VB for Applications
gelöst VBA-Makro verschwindet nach Speichern (5)

Frage von lupi1989 zum Thema VB for Applications ...

Microsoft Office
Access ein Script alle X Minuten ausführen und bei Bedarf stoppen (5)

Frage von thomas1972 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

KVM

How to: Libvirt Port forwarding

(2)

Anleitung von fundave3 zum Thema KVM ...

Heiß diskutierte Inhalte
Router & Routing
über Vmware auf eine FritzBox mit IPv6 per VPN (17)

Frage von Zockervogel zum Thema Router & Routing ...

Basic
Programmierung von Windows Programmen (8)

Frage von Ghost108 zum Thema Basic ...