Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Makro in VBA programmieren

Begonnen von wuffwuff2003, Juni 27, 2013, 13:18:04

⏪ vorheriges - nächstes ⏩

wuffwuff2003

Wie müsste ich folgendes Makro in VBA schreiben, kann mir hier jemand weiterhelfen:
SUCHEN NACH DATENSATZ:
Objekttyp:
Objektname:
Aufnahme: Erster
Bedingung: ="[ID] = " & Str(Nz(Screen.ActiveControl;0))

Das Makro steht in einem Dropdownfeld, und wurde von Access selbst generiert. Deshalb ist die Funktion Makro in VBA konvertieren auch gesperrt.
Danke

DF6GL

Hallo,

vermutlich:

Me.Recordset.Findfirst "[ID] = " & Nz(Screen.ActiveControl;0)


wuffwuff2003

Hallo, Nein das führt zu einem Debug Fehler wenn ich diese Zeile so eingebe

MzKlMu

Hallo,
das man selbst nicht merkt, dass Helfer mit einer solchen Antwort nichts anfangen können werde ich nie begreifen.

- Beschreibe genau was Du wo und wie gemacht hast
- Zeige den verwendeten vollständigen Code
- Wie lautet die Fehlermeldung des Debuggers
Gruß Klaus

wuffwuff2003

Ich bräuchte nur das oben geschriebene Makro in einer VBA Form mehr nicht. Ich habe das Makro nun gelöscht und die vorgeschlagene Zeile ein das VBA gesetzt, aber dann kommt es zu einem Laufzeitfehler in genau dieser einen Zeile und der Debugger startet.

bahasu

Hi
Zitat von: wuffwuff2003 am Juni 27, 2013, 19:30:05
dann kommt es zu einem Laufzeitfehler in genau dieser einen Zeile und der Debugger startet.

Leider gibt es mehr als einen Laufzeitfehler. >:(
Welche dürfen wir uns denn aussuchen?  ???

Hilfreich wäre die Fehlernummer UND die FEHLERBESCHREIBUNG.

Harald
Servus

wuffwuff2003

Ich habe es nochmal nachgebildet dieses VBA

Private Sub Kombinationsfeld39_AfterUpdate()

Me.Recordset.Findfirst "[ID] = " & Nz(Screen.ActiveControl;0)


End Sub

Er meldet dann einen Syntaxfehler beim aussuchen einen neuen Kunden, der Cursor springt sofort auf das ; vor der Null zum Schluß des Befehls, der Befehl selbst bleibt während der Programmierung rot.


MzKlMu

Hallo,
ZitatEr meldet dann einen Syntaxfehler
und der lautet?

Lass Dir doch nicht alles aus der Nase ziehen. Wir sitzen doch nicht vor Deinem PC. Du willst doch Hilfe. Da muss man doch auch mitarbeiten.
Gruß Klaus

bahasu

Zitat von: wuffwuff2003 am Juni 27, 2013, 19:44:11
Er meldet dann einen Syntaxfehler beim aussuchen einen neuen Kunden, der Cursor springt sofort auf das ; vor der Null zum Schluß des Befehls, der Befehl selbst bleibt während der Programmierung rot.

und was passiert, wenn Du das ; gegen ein , tauschst?

Harald
Servus

wuffwuff2003

Ok vielen Dank dann scheint es zu klappen, jetzt kommt diese Zeile dann hinzu die ist auch falsch, das heißt die macht es genau falsch herum dieses NOT müsste ein YES oder TRUE sein, das passt aber nicht in diese Zeile:

Private Sub Kombinationsfeld39_AfterUpdate()

Me.Recordset.Findfirst "[ID] = " & Nz(Screen.ActiveControl, 0)

Me.ServiceManoeuvre.Visible = Not Me.ServiceAttache = 18


End Sub

MzKlMu

Hallo,
ich hatte bewusst nach der Meldung gefragt, weil die Meldung auf das falsche Semikolon hinweist.
Wenn Du die Meldung wie mehrfach gewünscht gleich zitiert hättest, wäre das schon längst gelöst.

Ansonsten, lösche das Not ersatzlos.
Gruß Klaus

bahasu

Zitat von: wuffwuff2003 am Juni 27, 2013, 20:06:14
Me.ServiceManoeuvre.Visible = Not Me.ServiceAttache = 18

wieso 18?
Im anderen Beitrag stand dort 8.

Harald
Servus

bahasu

Hi,

denkbar wäre auch, wenn bei 8 weiterhin ausgeblendet werden soll:

Me.ServiceManoeuvre.Visible = Me.ServiceAttache <> 8

Harald
Servus

wuffwuff2003

Ok das klappt jetzt, ich bin euch unendlich dankbar :) (Es sollte auch 18 sein hatte mich ganz zu Anfang geirrt hier im Forum, aber nicht im VBA sorry) Jetzt bleibt nur noch ein Haken, der mich auch zum verzweifeln bringt. VBA ist echt schwierig, und das noch nach 3 gelesenen Büchern :) Hier ist mal der ganze VBA Code nun.

Private Sub Kombinationsfeld39_AfterUpdate()
Me.Recordset.Findfirst "[ID] = " & Nz(Screen.ActiveControl, 0)
Me.ServiceManoeuvre.Visible = Me.ServiceAttache = 18
End Sub

Private Sub Kombinationsfeld39_BeforeUpdate(Cancel As Integer)
Cancel = MsgBox("Datensatz speichern", vbYesNo) = vbYes
If Cancel Then
DoCmd.Save
End If
End Sub

Das Problem nun ist, wenn ich die Message Box mit YES beantworte, speichert er den Datensatz ab, und wechselt zum neu eingestellten Namen, und gleicht die nachfolgenden Textelemente dem Namen entsprechend an, Also YES funktioniert. Drücke ich aber NO wechselt er zwar zum angewählten Namen, und speichert auch nicht ABER die nachfolgenden Textelemente schalten nicht mit dem gewechselten Namen um, ich muss dann separat oben auf den Aktualisierungsbutton drücken. Wenn ich im VBA aber vor das End If folgendes hinzufüge:

Else
DoCmd.RefreshRecord

bekomme ich wieder eine Fehlermeldung

bahasu

Hi,

was soll mit
DoCmd.Save
gespeichert werden?

Einen Datensatz würde ich mit
DoCmd.RunCommand acCmdSaveRecord
speichern.

Welcher Code ist bei den Aktualisierungsbutton hinterlegt? Der könnte doch in einen else-Zweig rein.

Harald

PS: Der eigentliche Ablauf hat sich mir nicht vollständig erschlossen.
Servus