Neuigkeiten:

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

Mobiles Hauptmenü

X nach Y

Begonnen von hdkneip, Januar 26, 2024, 11:43:51

⏪ vorheriges - nächstes ⏩

hdkneip

Hallo

Ich suche eine Lösung welche Anweisung in HAHU stehen sollte
Name eines frmFeldes ist gleich einer Definition irgendwo

Public Vname01..10 as string

Sub Vname01_Exit(

adr=Vname01.name   , adr enthält ,,Vname01"
,
HAHU
,
Vname01=me(adr).value     Diese Anweisung möchte ich gerne in HAHU haben
,Vname01enthält jetzt HUHU
.
end sub


Sub HAHU()
zname = nz(me(adr), ,,Hallo")
.
.
wname = ,,HUHU"
.
.
me(adr),value = wname
.
.   Hier sollte das Versorgen von Vname01...10 stehen
.
end sub

Für eure Tipps Danke im voraus
Hans Dieter (Kneip)

PhilS

Der Sinn deiner Frage ist schwierig zu verstehen.

Zitat von: hdkneip am Januar 26, 2024, 11:43:51Vname01=me(adr).value     Diese Anweisung möchte ich gerne in HAHU haben
Mit den bisherigen, spärlichen Informationen würde ich sagen: Dann schreib sie doch einfach dorthin.

Es wäre hilfreich, wenn du die Intention der ganzen Geschichte mal etwas konkrete als nur mit HAHU und HUHU erklären würdest.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

#2
Hallo,
also ich vermag da auch noch nicht mal ansatzweise den Sinn und das eigentliche Vorhaben hinter der Schilderung zu erkennen.
Und mit HAHU und HUHU kann ich auch nichts anfangen.
Gruß Klaus

ebs17

Name eines frmFeldes ist auch etwas anderes als Zuweisung an den Value.
Mit freundlichem Glück Auf!

Eberhard

hdkneip

Hallo

Ich möchte den Inhalt mehrerer FormFelder in WorkFelder gleichen Namens zentral verschieben.


adr=me!frmFeld.name    z.B. Vorname01
.
(Work)Vorname01 = "huhu" 

Klärt das etwas?


MzKlMu

#5
Hallo,
ZitatKlärt das etwas?
Nicht die Spur.
Was sind denn Workfelder ?
Und was heißt zentral verschieben ?
Wohin verschieben ?
Gruß Klaus

PhilS

Zitat von: hdkneip am Januar 27, 2024, 11:36:22Ich möchte den Inhalt mehrerer FormFelder in WorkFelder gleichen Namens zentral verschieben.
Was sind denn "WorkFelder"?
Mit ist weiterhin unklar, was du eigentlich vorhast und ebenso, wo eigentlich dein Problem liegt.

Du hast in dem ersten Post geschrieben, dass du eine Zeile Code von der einen Prozedur in die andere verschieben willst. In deinem Beispielcode sind aber alle relevanten Referenzen in beiden Prozeduren erreichbar. - Wenn das wirklich so ist, dann ist der Lösungsansatz Cut+Paste einer einzigen Zeile.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

hdkneip

Tut mir leid, dass ich mein Problem so undeutlich beschrieben habe.
Also ich ermittle den Namen eines FormFeldes mit adr = me!...name
Jetzt soll adr  z.B. "Vorname01" beinhalten.

Habe irgendwo definiert "Public Vorname01 as string"

In einer weiteren Sub lese ich den Inhalt mit VName = me!(adr).value aus.
"Peter" ist der Inhalt von VName.
Diesen Peter möchte ich ändern in "Paul" und in das [Publicfeld] Vorname01 verschieben.
me!(adr).value = "Paul" klappt ja.
Aber wie bekomme ich den "Paul" in das Publicfeld "Vorname01"


Beaker s.a.

Zitatme!(adr).value = "Paul" klappt ja.
Wie auch sonst?
Es gibt ja keine Variable in der "Paul" steht, die du hier einsetzen
könntest.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

PhilS

Zitat von: hdkneip am Januar 27, 2024, 13:23:26Diesen Peter möchte ich ändern in "Paul" und in das [Publicfeld] Vorname01 verschieben.

me!(adr).value = "Paul" klappt ja.
Aber wie bekomme ich den "Paul" in das Publicfeld "Vorname01"
Der Sinn deines Vorhabens ist weiterhin mysteriös, aber immerhin das Problem ist klar geworden.
Einfache Antwort: Das ist nicht möglich. Du kannst Variablen nicht per Stringinhalt zur Laufzeit ansprechen.

Alternativen wären,
a) Ein Array; dessen Elemente können nur mit dem numerischen Index angesprochen werden, den du aber mit der Right-Funktion aus dem Steuerelementnamen extrahieren kannst:
    Public vornamen(1 To 10) As String
' ------
    vornamen(CLng(Right(adr, 2))) = "Test"     ' me!(adr).Value

b) Eine Collection; das ist ein Objekt, dass eine Name(Key)/Wert-Auflistung darstellt. Komplexer ist, das du unterscheiden musst, ob du einen neuen Wert hinzufügen, oder einen bestehenden Wert ändern willst,

Public vornamen As New Collection
' -------       
    On Error Resume Next
    vornamen(adr) = "Testwert"     ' me!(adr).Value
    If Err.number = 5 Then
        vornamen.Add "Testwert", adr
    End If
    On Error GoTo 0

Der Codeschnipsel ist ziemlich minimalistisch und krude; er soll nur der groben Veranschaulichung dienen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

hdkneip

Hallo

Danke für eure Geduld mit einem 87-jährigen Rentner, der sich mit ACCESS versucht.

Der Tipp von PhilS klappt.

Schönes Wochenende und 5 Richtige im Lotto wünsche ich.

Gruss von Rhein und Mosel
Hans Dieter (Kneip)